Я пытаюсь построить центральную обработку ошибок с использованием Camel.
Я хочу, чтобы все мои маршруты, отображающие конечные точки REST, имели прозрачную обработку ошибок, переводя исключения в коды ошибок HTTP одним куском кода.
В настоящее время я достигаю этого с помощью Abstract RouteBuilder, определяющего маршрут onException в своем Contructor.Когда я наследую его в конкретном RouteBuilder, он работает нормально.Однако это непрозрачно, так как я должен знать, что мне нужно наследовать от абстрактного класса, чтобы он работал.
Есть ли какой-либо механизм в Camel, похожий на Jersey ExceptionMapper?
Что мне нужно, так это место в платформе Camel, где я могу настроить обработку ошибок без необходимости гарантировать, что любой член команды должен помнить, что он наследует абстрактный класс обработки ошибок.
чтоВ настоящее время у меня есть
public abstract class ErrorHandlerRoute extends RouteBuilder {
public ErrorHandlerRoute () {
super();
onException().handled(true)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Exception cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
//handle exceptions here
exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, HttpStatus.SC_INTERNAL_SERVER_ERROR);
exchange.getOut().setFault(false);
});
}
}
public class MyBusinessRoute extends ErrorHandlerRoute {
@Override
public void configure() throws Exception {
//OK, I know that my errors will be handled
rest()
.get("/{param}")
to("http4://backend");
}
}