Apache驼峰重启路线

时间:2017-06-16 14:08:37

标签: rabbitmq apache-camel

我有以下内容:

from("rabbitmq://...")
     .process(processor1)
            :
     .process(processorn)
     .process(SendToExternalAppProcessor)

SendToExternalAppProcessor.process()使用生产者模板将exchange参数中的内容形成的某些请求发送到另一个rabbitmq2方法sendBody()

问题是,一旦SendToExternalAppProcessor.process()执行并且在路由上方执行,它将再次与rabbitmq2的侦听器一起重新启动路由。

我在这里缺少什么?是否有任何apache camel配置从我的注意力中滑落?

PS:我知道我没有在这里给出任何具体的代码,以便在您的机器上复制场景,但我希望经验丰富的头脑和眼睛能够快速回忆并提出建议。 (另外,我不能直接分享我的项目代码以及它的大而复杂的)

更新
我尝试评论sendBody()并仍然重新启动路线。我必须在这里遗漏一些奇怪的基本设置...

3 个答案:

答案 0 :(得分:0)

我认为这只是对路线运作方式的误解。 '从'不是一次性的事件;它将继续接受来自消息来源的消息,直到您明确告知路由停止为止。

答案 1 :(得分:0)

“from”作为普通的rabbitmq消费者。路线的设计始终如一。

如果您只想将交换转移到另一个rabbitmq,“to”就足够了。

from("rabbitmq://...")
     .process(processor1)
            :
     .process(processorn)
     .to("rabbitmq://rabbit2...")

答案 2 :(得分:0)

请告诉我们您正在使用的Camel版本。 您使用的是交易骆驼流吗?如果启用了任何事务模式,那么一个可能的问题可能是JMS提交确认。可能是Camel消费消息和处理但不承认rabbitmq。所以消息仍然在那里并且通过骆驼路线一次又一次地消耗。默认情况下它是AUTO_ACKNOWLEDGE,因此如果不是交易的驼峰路线则不应该是这种情况。

相关问题