Camel jms听众没有收到正确的消息

时间:2016-11-02 13:50:46

标签: apache-camel jms ibm-mq spring-jms

用例:我想从http端点选择消息并将它们路由到jms端点。

我的路线配置如下:

from("jetty:http://0.0.0.0:9080/quote")
            .convertBodyTo(String.class)
            .to("stream:out")
            .to(InOut, "wmq:queue:" + requestQueue +
                    "?replyTo=" + responseQueue +
                    "&replyToType=" + replyToType +
                    "&useMessageIDAsCorrelationID=true");

我的理解是这样我将获得JMS端点的请求 - 响应模式,而correlationId将是对相应请求做出响应的唯一标识符。 当我只运行一个应用程序实例时,这很有效,但是当我同时运行多个实例时,响应是随机拾取的,而不仅仅是生产者。

例如,A和B是具有完全相同配置的路由(和侦听器)的2个实例,用于侦听共享队列上的响应。有时A会得到它的响应,但有时它也会收到B发出的消息的响应。

感谢任何关于此的帮助/指示。谢谢!

1 个答案:

答案 0 :(得分:0)

基本上问题是使用设置为replyToType的{​​{1}} - 这导致侦听器拾取所有内容而不是使用jms选择器来匹配相关ID。

我将Exclusive的值更改为replyToType,现在一切正常。

这在#34;通过JMS的请求 - 回复"部分中得到了很好的定义。在http://camel.apache.org/jms.html