双向Apache驼峰路由-无限循环

双向Apache驼峰路由-无限循环,apache,apache-camel,jms,tibco-ems,solace,Apache,Apache Camel,Jms,Tibco Ems,Solace,我想在两个端点之间建立路由。由于这些端点(JMS主题)的性质,我希望桥接是双向的 Tibco端点的基础JMSCOComponent已启用pubSubNoLocal参数,该参数可确保使用者不会接收其自身根据发送的消息 耻骨下假性 指定是否禁止传递由其自身连接发布的消息 但是,这没有效果,因为这两个路由创建到JMS主题my.topic的独立连接 因此,以下内容将创建一个无限循环。 如前所述,我需要路线在两个方向上运行,以实现“无缝集成” 您需要在消息中添加一些指示,表明它已通过任一网桥发送。您可以

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

Tibco端点的基础JMSCOComponent已启用pubSubNoLocal参数,该参数可确保使用者不会接收其自身根据发送的消息

耻骨下假性 指定是否禁止传递由其自身连接发布的消息

但是,这没有效果,因为这两个路由创建到JMS主题my.topic的独立连接

因此,以下内容将创建一个无限循环。 如前所述,我需要路线在两个方向上运行,以实现“无缝集成”



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

我建议您考虑以下概念

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

  • 添加带有服务器ID的“PRODUCER”头(无论您如何定义)
  • 所有侦听器都必须配置为“NOT(PRODUCER='your_ID')”
完成了吗

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

<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>