2011-09-13 25 views
9

Camel 'sub' wyraźnie tras obsługuje dwa zakresy '' obsługi błędów:Camel - Obsługa wyjątków w

  • globalne
  • za Szlaku

Emisja mam się wyjątki wyrzucane w "podstradzie". Na przykład, mam tę trasę:

from("direct:sendToWebservice"). 
    .processRef("massageBeforeSending"). 
    .to("http://webservice.com"). 
    .processRef("massageResponse"); 

Wtedy mam dwie inne trasy, które wymagają, aby wysyłać wiadomości do usługa:

from(direct:fromSystemA"). 
    .errorHandler(deadLetterChannel("direct:TellSystemA")). 
    .to("direct:sendToWebservice"); 

from(direct:fromSystemB"). 
    .errorHandler(deadLetterChannel("direct:TellSystemB")). 
    .to("direct:sendToWebservice"); 

Jakie chciałbym się zdarzyć to, że jeżeli trasa usługi internetowej zgłasza wyjątek, jest propagowana do rozmówcy, a system A lub system B zostanie powiadomiony. Nie widzę sposobu, aby to osiągnąć.

Czuję, że to będzie typowy przypadek użycia - czy ktoś wcześniej wpadł na to wcześniej?

Jeszcze raz dziękuję za poświęcony czas,

Roy

Odpowiedz

16

dostałem odpowiedź od kolegi: The subroute musi mieć to obsługa błędu wyłączone:

from("direct:sendToWebservice"). 
    .errorHandler(noErrorHandler())  // disables error handling for this route 
    .processRef("massageBeforeSending"). 
    .to("http://webservice.com"). 
    .processRef("massageResponse"); 

Zmusza Camel propagować błąd do trasy wywołującej.