双向Apache骆驼路线-无限循环

时间:2018-08-16 17:23:43

标签: apache apache-camel jms tibco-ems solace

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

Tibco终结点的基础JmsComponent启用了pubSubNoLocal参数,该参数可确保使用者不接收根据http://camel.apache.org/jms.html

本身发送的消息

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

但是,这没有效果,因为这两个路由创建了到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>

2 个答案:

答案 0 :(得分:1)

我建议考虑message selectors and headers的概念。

我的看法是,您做两件事:

  • 添加带有服务器ID的“ PRODUCER”标头(无论您如何定义)
  • 您的所有侦听器都必须配置negative selector“不(PRODUCER ='YOUR_ID')“

完成了吗?

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

答案 1 :(得分:0)

您将需要在消息中添加一些指示,表明它已通过任一网桥发送。您可以使用现有属性(交付?),也可以添加新属性。例如,设置属性bridged = true穿过桥时。然后,您可以在定义中过滤掉已桥接的每条消息。