骆驼使用控制总线暂停路线



>我有骆驼路线,它在异常时使用控制总线暂停路线。

onException(Exception.class).maximumRedeliveries(1).onRedeliveryRef("controlBusProcessor");
from("quartz2://myGroup/myTimerName?trigger.repeatInterval=2000&trigger.repeatCount=0")
                    .routeId("myRoute")
                    .process(simpleProcessor)
                    .to("stream:out")

路由最初调用一个引发Exception的简单处理器,onException有一个redeliveryRef调用一个暂停路由的控制总线处理器,但它仍然调用简单处理器来重新传递消息。

如果路由暂停,为什么仍然调用简单处理器,难道不应该等到路由恢复吗?

否 路由将在暂停之前完成其飞行中消息。在自定义重新传送处理器中,可以通过将交换的属性设置为 Exchange.STOP=true 来标记交换以停止继续路由。

看看StopProcessor是如何做到这一点的:https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/processor/StopProcessor.java

我怀疑重新交付从故障点开始,即.process(simpleProcessor(。但是,如果您只想暂停路由,为什么不直接添加.onException(Exception.class).to("controlBusProcessor")

最新更新