首页 > 解决方案 > 双向 Apache Camel 路线 - 无限循环

问题描述

我有 2 个端点,我想在它们之间建立路由。由于这些端点(JMS 主题)的性质,我希望桥接是双向的。

Tibco 端点的底层 JmsComponent 启用了 pubSubNoLocal 参数,以确保消费者不会收到它自己根据http://camel.apache.org/jms.html发送的消息

pubSubNoLocal false 指定是否禁止传递由它自己的连接发布的消息。

但是,这没有任何效果,因为 2 条路由创建了到 JMS 主题 my.topic 的单独连接。

结果,以下将创建一个无限循环。如前所述,我需要为“无缝集成”双向操作的路线

<c:route>
            <c:from uri="tibco:topic:my.topic"/>
            <c:to uri="solace-jms:topic:mytopic" />
</c:route>
<c:route>
            <c:from uri="solace-jms:topic:mytopic"/>
            <c:to uri="tibco:topic:my.topic" />
</c:route>

标签: apacheapache-cameljmstibco-emssolace

解决方案


我建议考虑消息选择器和标头的概念。

在我看来,你做了两件事:

  • 添加带有您的服务器 ID 的“PRODUCER”标头(无论您如何定义它)
  • 您的所有侦听器都必须配置一个否定选择器“NOT (PRODUCER='YOUR_ID')”

完毕 ?

(当然,您也可以使用 2 个主题……但我认为这是不可能的……)


推荐阅读