有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案