java如何处理ActiveMQ使用者骆驼路由的from()以进行容器内测试?
我试图使用Arquillian在WildFly 11中运行我的Java驼峰路由的JUnit测试
问题是,路由(扩展RouteBuilder)在MQ代理初始化(或预热?)后就开始轮询它,也就是说,在我的测试代码有机会运行和模拟路由的from(“activemq:queue:myqueue”)之前很久。然后,它当然挂起,因为它尝试(硬编码的驼峰)默认61616端口
我还尝试扩展DefaultCamelContext,但如果我@Observe CdiCamelConfiguration并设置autoConfigureRoutes(false),尽管错误轮询不再发生(yay),但CDI也不再发生,并且当稍后我在测试类中手动加载路由时,所有注入的内容都为null(buuh)
@ApplicationScoped
class MyCamelContext extends DefaultCamelContext {
@PostConstruct
void manual() throws IOException {
setAutoStartup(false); // cool but doesn't help as camel
// dows the warmup anyway, so activemq will poll
}
static void configuration(@Observes
final CdiCamelConfiguration configuration) {
configuration.autoConfigureRoutes(false); // cool but breaks CDI
}
}
显然,在测试用例或测试套件中我无能为力(它们甚至会在以后运行)。我可以用from(“direct:blah”)重新定义路线,但我希望保持路线代码不变。另外,定义不自动启动的路由也没有帮助,因为activemq在创建RouteBuilder bean后就开始轮询
我曾想过使用包覆面提取归档文件部署一个队列jms。xml,但我不知道我可以在那里放些什么来挽救这种局面。或者以某种方式覆盖brokerURL,但我找不到任何方法
但是,我如何在没有任何路由bean尝试轮询任何内容的情况下初始化路由bean
版本:WildFly 11中的Camel 2.21.0-实际上是JBoss EAP 7.1.5和Fuse 7.2
共 (0) 个答案