如何使用Camel集中处理REST API错误

时间:2018-10-03 15:08:48

标签: java apache-camel

我正在尝试使用Camel构建集中式错误处理。

我希望所有暴露REST端点的路由都具有透明的错误处理,将异常转换为一段代码即可转换成HTTP错误代码。

目前,我通过在其构造函数中定义onException路由的Abstract RouteBuilder实现了此目的。当我在具体的RouteBuilder中继承它时,它可以正常工作。 但是,这不是透明的,因为我必须知道必须从抽象类继承才能使它起作用。

骆驼中是否有类似于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");
    }
}

0 个答案:

没有答案