我有两个组件,第一个使用Apache Camel(请求/响应模式)将AMQ消息发送到第二个组件,但有些消息不会被第二个组件消耗(保持挂起状态。几分钟后,该消息将消失到dlQueue)。 为什么呢?
这是我的一些代码:
private static class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() {
//...
from("activemq:queue:Q.second")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
//...
}
})
.log("The Reply of (${in.header.Title}) has been sent successfully!");
}
}
和第二个组件的RouteBuilder:
{{1}}
答案 0 :(得分:0)
如果我没记错,ActiveMQ端点的默认配置应用预取限制为1000条消息。这可能会导致您与池化连接一起描述的问题。 为ActiveMQ使用者端点使用单个连接而不是连接池,或者将预取限制设置为0可能会解决问题。
通过将jms.prefetchPolicy.all=0
附加到您的连接网址,可以为所有消费者设置预取限制为0.
查看预取的AMQ documentation。