【发布时间】:2014-08-28 13:41:04
【问题描述】:
我正在尝试在使用 REST 端点的 Camel Route 中构建拆分/聚合模式。它需要一个包含请求详细信息列表的请求对象。我想并行处理请求详细信息,然后将聚合结果返回给调用者。我希望这是一个同步调用。
这是我的路线中的代码。
from("{{generate.route.endpoint}}")
.routeId(EXAMPLE_ROUTE_ID)
.split().method(RequestDetailsSplitter.class).stopOnException().parallelProcessing()
.to("direct:processRequestDetails")
.aggregate(header(TRANSACTION_ID_PARAM), responseAggregator)
.completionSize(simple("${property.CamelSplitSize}"))
.completionTimeout(5000L).parallelProcessing()
.log(LoggingLevel.INFO, "After Aggregation ---> ${body}")
.end()
.removeHeaders("*")
.setHeader(Exchange.HTTP_RESPONSE_CODE,
simple(String.valueOf(HttpStatus.SC_CREATED)));
我希望调用的结果是聚合调用的输出,即我的响应对象。但我实际得到的是 REST 调用返回的请求对象??
当我在其中添加更多日志语句时,我可以看到 Split 调用正在触发多个线程,这很棒。我可以看到“聚合后--->”上方的日志语句以及我想要的响应,这有它自己的线程。但是这个输出会发生什么?我怎样才能把它恢复到我的默认 Exchange 中,以便它可以返回到 REST 调用。
【问题讨论】:
标签: apache-camel