2013-06-27 19 views
7

Jaka jest różnica między:Apache Camel: errorHandler vs onException?

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

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

oraz:

<onException> 
    ... 
</onException> 

Według this article, wykorzystując je zarówno w połączeniu jest "silne połączenie". Jak to? Jakie role przyjmują poszczególne osoby i jak się uzupełniają?

Odpowiedz

13

Urządzenie errorHandler służy do obsługi każdego nieprzechwyconego użytkownika Exception, który zostanie zgłoszony podczas routingu i przetwarzania wiadomości. Odwrotnie, onException jest używany do obsługi określonych typów Exception, gdy są one rzucane. Sprawdź, this article, aby dowiedzieć się, jak korzystać z onException.

+0

Więc jeśli napiszę 'onException (Throwable.class)' w zasadzie zaimplementowałem 'errorHandler'? – DavidS

1

Jeśli czynność, którą należy wykonać dla każdego typu wyjątku, jest inna, należy użyć wyjątku onException. Pozwala zdefiniować obsługę błędów na zasadzie wyjątku.

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

Jeśli wystarczy rodzajowe obsługi, iść z errorHandler. Dla wszystkich typów błędów zostanie wykonane to samo przetwarzanie.

Powiązane problemy