Camel的ActiveMq端点不消耗某些消息

时间:2015-12-26 11:30:34

标签: java apache-camel activemq

我有两个组件,第一个使用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}}

1 个答案:

答案 0 :(得分:0)

如果我没记错,ActiveMQ端点的默认配置应用预取限制为1000条消息。这可能会导致您与池化连接一起描述的问题。 为ActiveMQ使用者端点使用单个连接而不是连接池,或者将预取限制设置为0可能会解决问题。

通过将jms.prefetchPolicy.all=0附加到您的连接网址,可以为所有消费者设置预取限制为0.

查看预取的AMQ documentation