on Camemple in Camel 2.14

时间:2014-11-07 10:53:35

标签: apache-camel

我希望将已处理邮件的结果包装到某个回复对象中以回答网络服务。这是我的测试路线:

this.from("cxf:someEndpoint")
        .process(new SomeProcessorThatMightThrowAnException())
        .process(new SomeOtherProcessorThatMightThrowAnException())
        .log("normal end of route");

没关系,如果有异常,结果应该包含在某个对象中,然后返回给我的ws的调用者。

在camel 2.13.x中,我通过在路径末尾添加另一个处理器并在“异常”中执行相同的操作。 现在我试图在camel 2.14(2.14因为&#39; modeBeforeConsumer&#39;)中简化这个(技术问题并在“功能路线”之外处理它),并将其添加到我的路由器中:< / p>

onCompletion()
    .modeBeforeConsumer()
    .process(new ConvertToWsReplyProcessor());

这个ConvertToWsReplyProcessor应该处理一个Exception,但我发现没有办法看到,如果有异常,因为exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class)总是为空。

问题:
1)有没有办法找出onCompletion()中是否存在例外情况? 2)我发现防止骆驼倾倒堆栈跟踪的唯一方法是使用onException(Ex...).handled(true),还有其他人吗? 3)这些onXY如何处理?他们得到交换的副本吗?并且onCompletion被称为last?

1 个答案:

答案 0 :(得分:1)

OnCompletionProcessor只需在处理交换之前删除一些交换属性,这可以解释为什么你不能在这里解决这个异常。

由于camel使用onException来处理异常,我担心你必须这样做。