Apache camel - 处理和重新抛出异常

时间:2017-05-03 23:26:47

标签: java spring apache-camel

我正在使用Java DSL来配置路由。我有一条类似于下面给出的路线。

    RouteBuilder builder = new RouteBuilder() {
        public void configure() {
           // onException(Exception.class).bean("bean");

            onException(Exception.class).to("anotherProcessor");

            from("queue:a").bean("someBean").to("processor");
        }
    };

在做一些活动后如何炸毁异常?例外,我尝试配置处理器和bean来重新抛出异常。无论哪种方式,骆驼都将异常设置为交换但不会炸毁异常。

我在junit测试案例中这样做。我正在使用onException处理器处理异常。在处理器内部,我正在做我的断言。断言错误由camel自动处理,测试未被标记为通过/失败。

1 个答案:

答案 0 :(得分:0)

[value]="true"

<强>的try-catch

from(CONSUMER)
    .doTry()
    .doCatch(SocketTimeoutException.class,Exception.class)
            .beanRef("ErrorProcessor","processErrorMessage")
            .to("freemarker:ErrorResponseTransformer.ftl")
    .end()
    .to(PRODUCER)

关于例外 处理异常并将其作为要显示的响应错误消息进行处理。您甚至可以使用onException(Exception.class) .handled(true) .process(new Processor() { public void process(Exchange e) throws Exception { helper.processErrorMessage(e); log.info("Response error: " + MessageHelper.extractBodyAsString(e.getIn())); log.info("Response error: " + MessageHelper.extractBodyAsString(e.getOut())); } }); 或窃听来继续正常流动。

或使用camel的 errorHandler

希望这有帮助。