我有一个Apache Camel路由来处理来自队列的消息。为了更好地理解运行时发生的事情,我还将执行状态保留在数据库中(重试次数,上次执行状态,......)。我想使用异常处理程序中的重新传递机制,但是在每次更新数据库记录时都会执行一些处理。
from("jms:myinputqueue")
.onException(RetriableException.class)
.maximumRedeliveries(5)
.maximumRedeliveryDelay(10000)
.useOriginalMessage()
.to("log:store error information in database about each attempt") // (1)
.end() // onException
.to("log:apply business logic here which can throw exceptions")
;
部分(1)仅在所有重试耗尽后执行,因此只执行一次。
我已阅读Apache Camel- Message Redelivery happens before onexception block executes但建议的解决方案' onRedelivery''在重新开始之前执行。我需要在每次失败时存储结果,这样我就可以在数据库中保存最后一个状态(错误消息)。
有什么建议吗?
答案 0 :(得分:0)
当发生异常时,您可以使用onExceptionOccurred
处理器。
它包含在Camel 2.17之后:https://issues.apache.org/jira/browse/CAMEL-9069