【问题标题】:Camel jms listener not picking up right messages骆驼 jms 监听器没有收到正确的消息
【发布时间】:2017-03-15 20:45:06
【问题描述】:

用例:我想从 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 将是对相应请求做出响应的唯一标识符。 当我只有 1 个应用程序实例在运行时,这很有效,但是当我同时运行 1 个以上的实例时,响应是随机获取的,而不仅仅是生产者。

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

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

【问题讨论】:

  • 您能否确认另一端的应用程序正在回复具有正确设置的不同相关 ID 的响应?

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


【解决方案1】:

基本上问题在于使用设置为 ExclusivereplyToType - 这导致侦听器拾取所有内容,而不是使用 jms 选择器来匹配相关 ID。

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

这在http://camel.apache.org/jms.htmlhttp://camel.apache.org/jms.html的“通过 JMS 的请求-回复”部分中有很好的定义

【讨论】:

  • 行了 =)
猜你喜欢
  • 1970-01-01
  • 2016-02-06
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 2013-08-13
  • 2015-05-19
  • 2011-05-29
相关资源
最近更新 更多