Camel requestBodyAndHeaders()不返回路由结果

时间:2015-06-04 15:16:36

标签: apache-camel

我有一个分裂/聚合的Camel路线:

from("seda:start")
        .routeId("camelRoute")
        .log("Request: ${body}")
        .split()
        .method(SplitService.class, "splitRequest")
        .parallelProcessing()
        .bean(SendToWorker.class, "sendToQ1(${body}, ${headers})")
        .aggregate(header("corrID"),
                new CustomAggregationStrategy()).completionSize(5)
        .log("Aggregated ${body}")
        .bean(SendToWorker.class, "sendToQ2(${body}, ${headers})")
        .log("Response: ${body}");

最后一个日志正确显示结果。当我把它称为

@Autowired
private ProducerTemplate producerTemplate;
[...]
Object o = producerTemplate.requestBodyAndHeaders("seda:start", request, headers)

我无法从Camel路线取回结果。 返回的o实例是请求对象本身

有谁知道这里有什么问题?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您应该使用带有agg策略的拆分器来执行拆分+聚合,然后在同一条腿中完成。

请参阅拆分聚合请求/回复示例

答案 1 :(得分:0)

如果在使用以下方法将ExchangePattern设置为Bean之前将其设置为InOut,那该怎么办?

...
.setExchangePattern(ExchangePattern.InOut)
.bean(...