как обрабатывать ошибки REST API централизованно с Camel - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь построить центральную обработку ошибок с использованием 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");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...