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

时间:2018-01-19 18:00:27

标签: java apache-camel

我有驼峰路线,在例外情况下使用控制总线暂停路线。

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

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

如果路由被暂停,为什么还要调用简单的处理器,如果不等到路由恢复呢?

2 个答案:

答案 0 :(得分:0)

我怀疑重新开始是在.process(simpleProcessor处的失败点开始的。但是,如果您只想暂停路线,为什么不只是添加.onException(Exception.class).to("controlBusProcessor")

答案 1 :(得分:0)

在暂停之前,路线不会完成其正在进行的消息。在自定义重新传递处理器中,您可以通过在Exchange.STOP=true交换机上设置属性来标记交换以停止继续路由。

了解StopProcessor如何做到:https://github.com/apache/camel/blob/master/camel-core/src/main/java/org/apache/camel/processor/StopProcessor.java