Aapche-Camel保存每次重试的错误信息

时间:2017-04-20 08:43:40

标签: exception-handling apache-camel

我有一个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''在重新开始之前执行。我需要在每次失败时存储结果,这样我就可以在数据库中保存最后一个状态(错误消息)。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

当发生异常时,您可以使用onExceptionOccurred处理器。

它包含在Camel 2.17之后:https://issues.apache.org/jira/browse/CAMEL-9069