Apache Camel: errorHandler против onException?
в чем разница между:
<camel:errorHandler id="deadLetterErrorHandler" type="DeadLetterChannel"
deadLetterUri="log:dead">
<camel:camelContext errorHandlerRef="deadLetterErrorHandler">
...
</camel:camelContext>
и:
<onException>
...
</onException>
по данным в этой статье, использование их обоих в сочетании является "мощной комбинацией". Как так? Какие роли каждый из них принимает на себя и как они дополняют друг друга?
2 ответов
на errorHandler
используется для обработки любого uncaught Exception
который выбрасывается во время маршрутизации и обработки сообщения. И наоборот, onException
используется для обработки специфических Exception
типы, когда их бросают. Проверьте в этой статье чтобы увидеть, как использовать onException
.
Если действие, которое необходимо выполнить для каждого типа исключения, отличается, используйте onException. Это позволяет определить обработку ошибок на основе исключений.
onException(xxxException.class).to("activemq:xxxFailed");
onException(yyyException.class).to("activemq:yyyFailed");
Если вам просто нужен общий обработчик, перейдите к errorHandler. Для всех типов ошибок будет выполняться одна и та же обработка.