java - 如何处理 ActiveMQ 消费者 Camel 路由的 from() 以进行容器内测试?
问题描述
我正在尝试使用 Arquillian 在 WildFly 11 中运行我的 Java Camel 路由的 JUnit 测试。
问题是,路由(扩展了 RouteBuilder)在初始化(或预热?)时就开始轮询 MQ 代理,也就是说,早在我的测试代码有机会运行和模拟 from("activemq :queue:myqueue") 的路线。然后它当然挂在那里,因为它尝试(骆驼硬编码)默认的 61616 端口。
我也尝试扩展 DefaultCamelContext 但是如果我 @Observe CdiCamelConfiguration 并设置 autoConfigureRoutes(false) 并且虽然错误的轮询不再发生(耶),CDI 也不再发生并且所有注入的东西都是空的(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") 定义路线,但我想保持路线代码不变。同样定义不自动启动的路由也无济于事,因为一旦创建了 RouteBuilder bean,activemq 就会开始轮询。
我曾想过使用 shrinkwrap 存档也部署一个 queue-jms.xml,但我不知道我可以放什么来挽救这种情况。或者以某种方式覆盖 brokerURL 但我找不到任何方法。
但是,如何在没有任何尝试轮询任何内容的情况下初始化路由 bean?
版本:WildFly 11 中的 Camel 2.21.0 - 实际上是 JBoss EAP 7.1.5 和 Fuse 7.2。
解决方案
推荐阅读
- ios - 如何从给定图像访问 JsonData
- r - 在 *apply 中使用 `[`
- python - 以每秒 n 个请求的速率执行命令
- html - Blogger Soho 主题主页列之间的宽度
- java - 我在服务器上得到 java.io.FileNotFoundException 而在本地调试它工作正常
- javascript - 从 href 中删除兄弟姐妹类
- javascript - Python,从 javascript 网站抓取数据
- visual-studio - Docker Container url 无法通过 Windows 10/docker CE/.net Core 上的 localhost 或 ip 访问
- azure - 身份服务器 4 - PasswordSignInAsync 方法抛出 IsNotAllowed=true
- kubernetes - Helm 不安装 StorageClass