Apache Camel: errorHandler vs onException?

有什么区别:

<camel:errorHandler id="deadLetterErrorHandler" type="DeadLetterChannel" 
        deadLetterUri="log:dead">

<camel:camelContext errorHandlerRef="deadLetterErrorHandler">
    ...
</camel:camelContext>

和:

<onException>
    ...
</onException>

根据本文,将它们同时使用是一种“强大的组合”。怎么会这样?他们各自承担什么角色,他们如何相互补充?


答案 1

用于处理在路由和处理消息期间引发的任何未捕获。相反,用于在抛出特定类型时处理它们。查看本文,了解如何使用 。errorHandlerExceptiononExceptionExceptiononException


答案 2

如果需要对每种类型的异常执行的操作不同,请使用 onException。它允许您基于每个异常定义错误处理。

onException(xxxException.class).to("activemq:xxxFailed"); onException(yyyException.class).to("activemq:yyyFailed");

如果您只需要一个通用处理程序,请使用 errorHandler。对于所有类型的错误,将执行相同的处理。


推荐