Apache Camel:具有completionTimeout和completionSize的聚合器?

时间:2015-02-02 13:25:50

标签: java apache-camel aggregation

我正在使用Apache Camel java DSL aggregator,我希望completionTimeoutcompletionSize一起玩得很好(无论哪个触发器首先应该完成聚合)。< / p>

.from("direct:aggregateResponses")
    .aggregate(property(KEY), new KeepSuccessfulAggregationStrategy())
    .completionTimeout(500)
    .completionSize(property(NUMBER_RESPONSES_TO_EXPECT))

我向2个网络服务发送请求并汇总2个响应(&#34; Scatter Gather&#34;模式)。

第一个例子,如果两个响应都在100ms(和NUMBER_RESPONSES_TO_EXPECT == 2)内返回,则聚合器返回一个结果(并且不等待500ms)这是按预期工作的。

现在,第二种情况,让我们说第一个响应在100ms后返回,第二个响应需要3000ms(我可以通过测试路径中的模拟来测试...)

我希望聚合器能够停止&#34;停止&#34; 500ms后,给我第一个回复,丢弃第二个回复。然而,完成超时不会触发,而响应次数< NUMBER_OF_RESPONSES_TO_EXPECT

最简单的方法是什么?

即。我希望将这两者结合起来,它们独立工作:

.from("direct:aggregateResponses")
    .aggregate(property(KEY), new KeepSuccessfulAggregationStrategy())
    .completionTimeout(500)

.from("direct:aggregateResponses")
    .aggregate(property(KEY), new KeepSuccessfulAggregationStrategy())
    .completionSize(property(NUMBER_RESPONSES_TO_EXPECT))
谢谢,史蒂夫。 (骆驼版= 2.10)

0 个答案:

没有答案