【问题标题】:Aapche-Camel save error information on each retryApache-Camel 在每次重试时保存错误信息
【发布时间】:2017-04-20 08:43:40
【问题描述】:

我有一个处理来自队列的消息的 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”在新的重试开始之前执行。我需要存储每次失败的结果,以便将最后一个状态(错误消息)保存在数据库中。

有什么建议吗?

【问题讨论】:

    标签: exception-handling apache-camel


    【解决方案1】:

    您可以使用一个onExceptionOccurred 处理器,当异常发生时会调用它。

    它包含在 Camel 2.17 及以后的版本中:https://issues.apache.org/jira/browse/CAMEL-9069

    【讨论】:

    • 正是我所需要的。让我借此机会感谢您。我已经将 Camel 集成到了几个项目中,并且总是很成功。感谢您为它付出的所有努力(已经这么多年了)并且仍然抽出时间帮助人们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2020-12-26
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多