Я хотел бы использовать onExceptionProcessor
для перехвата любых исключений, пойманных моим построителем маршрутов, и сохранения их в базе данных.
Я не знаю, должен ли я использовать onException (Exception.class) или errorHandler () и как их правильно реализовать!
Я попробовал try-catch, но он не улавливает мое исключение (нулевой указатель, который я выбрасываю в процессор1). Может быть, я не правильно его реализую?
Вот мой маршрутBuilder:
@component
public class MyRoute extends RouteBuilder {
@Autowired
private Processor processor1;
@Autowired
private Processor procssor2;
@Autowired
private Processor processor3;
@Autowired
private Processor onExceptionProcessor; // it a processor where i try to save the stacktrace of exception in the database
@Override
public void configure() throws Exception {
from(jmsDecoupageRouteIn)
.id("route_id_processing").messageHistory().transacted()
.log(LoggingLevel.DEBUG, log, "It's for just for log").pipeline()
.process(processor1)
.id(processor1.getClass().getSimpleName().toLowerCase())
.process(procssor2)
.id(procssor2.getClass().getSimpleName().toLowerCase())
.process(processor3)
.id(processor3.getClass().getSimpleName().toLowerCase())
.doTry()
.to(jmsDecoupageRouteOut)
.doCatch(Exception.class)
.log(LoggingLevel.ERROR, "EXCEPTION: ${exception.stacktrace}")
.process(onExceptionProcessor)
.id(onExceptionProcessor.getClass().getSimpleName().toLowerCase())
.endDoTry();
}
}