【发布时间】:2022-02-12 22:17:10
【问题描述】:
我在 MyRouteBuilder.java 文件中有一条骆驼路线,它正在使用来自 ActiveMQ 的消息:
from("activemq:queue:myQueue" )
.process(consumeDroppedMessage)
.log(">>> I am here");
我为下面这样写了一个测试用例:
@Override
public RouteBuilder createRouteBuilder() throws Exception {
return new MyRouteBuilder();
}
@Test
void testMyTest() throws Exception {
String queueInputMessage = "My Msg";
template.sendBody("activemq:queue:myQueue", queueInputMessage);
assertMockEndpointsSatisfied();
}
当我运行单元测试用例时,我得到了这个奇怪的错误:
7:53:26.175 [main] DEBUG org.apache.camel.impl.engine.InternalRouteStartupManager - Route: route1 >>> Route[activemq://queue:null -> null]
17:53:26.175 [main] DEBUG org.apache.camel.impl.engine.InternalRouteStartupManager - Starting consumer (order: 1000) on route: route1
17:53:26.175 [main] DEBUG org.apache.camel.support.DefaultConsumer - Build consumer: Consumer[activemq://queue:null]
17:53:26.185 [main] DEBUG org.apache.camel.support.DefaultConsumer - Init consumer: Consumer[activemq://queue:null]
17:53:26.185 [main] DEBUG org.apache.camel.support.DefaultConsumer - Starting consumer: Consumer[activemq://queue:null]
17:53:26.213 [main] DEBUG org.apache.activemq.thread.TaskRunnerFactory - Initialized TaskRunnerFactory[ActiveMQ Task] using ExecutorService: java.util.concurrent.ThreadPoolExecutor@3fffff43[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
17:53:26.215 [main] DEBUG org.apache.activemq.transport.failover.FailoverTransport - Reconnect was triggered but transport is not started yet. Wait for start to connect the transport.
17:53:26.334 [main] DEBUG org.apache.activemq.transport.failover.FailoverTransport - Started unconnected
17:53:26.334 [main] DEBUG org.apache.activemq.transport.failover.FailoverTransport - Waking up reconnect task
17:53:26.335 [ActiveMQ Task-1] DEBUG org.apache.activemq.transport.failover.FailoverTransport - urlList connectionList:[tcp://localhost:61616], from: [tcp://localhost:61616]
17:53:26.339 [main] DEBUG org.apache.camel.component.jms.DefaultJmsMessageListenerContainer - Established shared JMS Connection
17:53:26.340 [main] DEBUG org.apache.camel.component.jms.DefaultJmsMessageListenerContainer - Resumed paused task: org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker@58c34bb3
17:53:26.372 [ActiveMQ Task-1] DEBUG org.apache.activemq.transport.failover.FailoverTransport - Attempting 0th connect to: tcp://localhost:61616
17:53:28.393 [ActiveMQ Task-1] DEBUG org.apache.activemq.transport.failover.FailoverTransport - Connect fail to: tcp://localhost:61616, reason: {}
看到这些消息我特别难过:
Route: route1 >>> Route[activemq://queue:null -> null]
和
urlList connectionList:[tcp://localhost:61616], from: [tcp://localhost:61616]
虽然我有一个正确的队列名称,但为什么队列会显示为 null?还有为什么broker url是tcp://localhost:61616?
我想运行这个单元测试用例,以便它在所有环境中都能正常运行,例如:本地、DIT、SIT、PROD 等。因此,我无法承担代理 URL 为:tcp://localhost:61616。
关于我在这里做错了什么以及我应该做什么有什么想法吗?
编辑 1:
我看到的问题之一是在调用测试类之前,createRouteBuilder() 中的 MyRouteBuilder() 被调用,导致我在日志中看到的问题。
【问题讨论】:
标签: java apache-camel activemq junit5