Camel:如果在2.14版之前从资源获取数据时发生异常,如何强制enrich()不调用aggregate()

时间:2015-01-27 17:05:59

标签: java apache-camel integration

在camel 2.14中出现选项aggregateOnException以强制aggregate()调用。

但我们使用2.8版。

在我的情况下这样的代码

from("some_route").routeId("enrich")
                .enrich("some_resource_with_useful_info", MyAggregator())
                .multicast().stopOnException()
                    .to("first_client", "second_client");

可能会在"some_resource_with_useful_info"失败,我希望骆驼不要在aggregate()中调用MyAggregator。但它确实调用并发生了第二个异常。

还配置了onException。

onException(Exception.class).handled(true).useOriginalMessage()
                    .to(ERROR_LOGGING_ENDPOINT).end();

1 个答案:

答案 0 :(得分:1)

您可以在MyAggregator中检测异常并将其传播到oldExchange,以便Camel错误处理程序可以做出反应。

做了很长时间的事情

if (newExchange.getException() != null) {
   oldExchange.setException(newExchange.getException());
   return oldExchange;
}