Sto provando a creare un'applicazione con più route cammello che utilizzano internamente molti percorsi comuni. Quindi, sto cercando di separare le rotte in diverse classi del Route Builder e quindi collegare le rotte dove necessario.La gestione delle eccezioni Camel non funziona se la clausola delle eccezioni è definita in una classe separata
Per esempio, tutti gli itinerari relativi a inviare e-mail andare in una classe EmailRouteBuilder e tutti gli itinerari che si occupano di un particolare JMS coda vanno in MyQueueRouteBuilder classe. Suppongo che questo dovrebbe andar bene visto che Camel non fa distinzioni tra le classi e cerca solo la definizione delle rotte.
Inoltre, sto anche raggruppando diverse rotte di gestione delle eccezioni in un ExceptionHandlingRouteBuilder separato.
Sono anche collegando tutte le diverse classi insieme con la definizione del contesto cammello in primavera in questo modo -
<camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
<propertyPlaceholder id="properties" location="classpath:${env}/autoimport.properties"/>
<!-- Common Routes -->
<routeBuilder ref="emailRouteBuilder" />
<routeBuilder ref="myQueueRouteBuilder" />
<routeBuilder ref="httpRouteBuilder" />
<routeBuilder ref="exceptionsRouteBuilder" />
<routeBuilder ref="customer1RouteBuilder" />
<routeBuilder ref="customer2RouteBuilder" />
</camelContext>
mio exceptionsRouteBuilder contiene molte clausole di eccezione come -
onException(ConnectException.class)
.routeId("connectExceptionEP")
.handled(true)
.log("Caught Exception: ")
.to("direct:gracefulExit");
..
..
..
Tuttavia, sembra che c'è un problema con le eccezioni definite in un'altra classe o, per quella materia, definite separatamente dalla definizione della rotta principale.
Ho verificato questo nei registri cercando i percorsi da avviare (da routeId) e controllando anche quando viene lanciata un'eccezione.
Inoltre, per confermare ulteriormente, ho preso la route di gestione http Connect Exception e l'ho inserita direttamente in httpRouteBuilder e lo ..! , la gestione delle eccezioni adesso va bene per questa eccezione ..
Mi manca qualcosa qui per far funzionare tutte le eccezioni pur essendo ben definite nella sua stessa classe. ?
Sto usando Apache Camel 2.9.0, ma ho verificato lo stesso comportamento anche in 2.8.3.
Grazie, Anand
bello .. grazie per quello ... –
Grande consiglio! Stavo cercando di capire perché l'onException non è stata attivata. –