用例:我想从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发出的消息的响应。
感谢任何关于此的帮助/指示。谢谢!
答案 0 :(得分:0)
基本上问题是使用设置为replyToType
的{{1}} - 这导致侦听器拾取所有内容而不是使用jms选择器来匹配相关ID。
我将Exclusive
的值更改为replyToType
,现在一切正常。
这在#34;通过JMS的请求 - 回复"部分中得到了很好的定义。在http://camel.apache.org/jms.html