我有以下内容:
from("rabbitmq://...")
.process(processor1)
:
.process(processorn)
.process(SendToExternalAppProcessor)
SendToExternalAppProcessor.process()
使用生产者模板将exchange
参数中的内容形成的某些请求发送到另一个rabbitmq2
方法sendBody()
。
问题是,一旦SendToExternalAppProcessor.process()
执行并且在路由上方执行,它将再次与rabbitmq2
的侦听器一起重新启动路由。
我在这里缺少什么?是否有任何apache camel配置从我的注意力中滑落?
PS:我知道我没有在这里给出任何具体的代码,以便在您的机器上复制场景,但我希望经验丰富的头脑和眼睛能够快速回忆并提出建议。 (另外,我不能直接分享我的项目代码以及它的大而复杂的)
更新
我尝试评论sendBody()
并仍然重新启动路线。我必须在这里遗漏一些奇怪的基本设置...
答案 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,因此如果不是交易的驼峰路线则不应该是这种情况。