Rabbitmq Apache camel正在重新启动路由

Rabbitmq Apache camel正在重新启动路由,rabbitmq,apache-camel,Rabbitmq,Apache Camel,我有以下几点建议: from("rabbitmq://...") .process(processor1) : .process(processorn) .process(SendToExternalAppProcessor) SendToExternalAppProcessor.process()使用生产者模板将由exchange参数中的内容形成的some请求发送到另一个rabbitmq2方法sendBody() 问题在于,一旦执行了Se

我有以下几点建议:

from("rabbitmq://...")
     .process(processor1)
            :
     .process(processorn)
     .process(SendToExternalAppProcessor)
SendToExternalAppProcessor.process()
使用生产者模板将由
exchange
参数中的内容形成的some请求发送到另一个
rabbitmq2
方法
sendBody()

问题在于,一旦执行了
SendToExternalAppProcessor.process()
并执行了以上路由,它将与
rabbitmq2
的侦听器一起重新启动上述路由

我错过了什么?是否有任何apachecamel配置从我的注意力中滑落

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

更新:

我试图通过注释
sendBody()
来重新启动路由。我肯定错过了一些奇怪的基本设置…

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

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

“发件人”作为普通rabbitmq使用者工作。路线设计为始终运行

如果您只想将交换传输到另一个rabbitmq,那么“to”就足够了

from("rabbitmq://...")
     .process(processor1)
            :
     .process(processorn)
     .to("rabbitmq://rabbit2...")
“from”作为普通rabbitmq使用者工作。路线设计为始终运行

如果您只想将交换传输到另一个rabbitmq,那么“to”就足够了

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

请让我们知道您正在使用哪一版本的Camel。
您是否使用事务处理驼峰流?如果任何事务模式处于启用状态,那么一个可能的问题可能是JMS提交确认。可能是Camel正在使用消息和处理,但未确认rabbitmq。所以消息仍然存在,并通过驼峰路线一次又一次地消耗。默认情况下,它是自动确认,因此,如果没有处理驼峰路线,则不应出现这种情况。

请告知您使用的驼峰版本。
您是否使用事务处理驼峰流?如果任何事务模式处于启用状态,那么一个可能的问题可能是JMS提交确认。可能是Camel正在使用消息和处理,但未确认rabbitmq。所以消息仍然存在,并通过驼峰路线一次又一次地消耗。默认情况下,它是自动确认,因此,如果没有处理驼峰路线,则不应出现这种情况。

您可以共享任何日志消息吗?路由正在重新启动的指示是什么?您可以共享任何日志消息吗?有什么迹象表明路线正在重新启动?我理解。我向rabbitmq发布了一条消息。是指在rabbitmq上侦听的
from()
是否有可能无限运行。我想它应该只运行一次,对发布给它的单个消息正确吗?嗯。。。可能消息是InOut exchange类型,并且它将返回到“from”端点?可能启用消息跟踪并查看。您还可以在“from”之后添加:.setExchangePattern(ExchangePattern.InOnly),以强制它,并查看这是否会改变行为。我理解这一点。我向rabbitmq发布了一条消息。是指在rabbitmq上侦听的
from()
是否有可能无限运行。我想它应该只运行一次,对发布给它的单个消息正确吗?嗯。。。可能消息是InOut exchange类型,并且它将返回到“from”端点?可能启用消息跟踪并查看。您还可以在“from”之后添加:.setExchangePattern(ExchangePattern.InOnly),以强制它,并查看这是否会改变行为。