我正在使用Apache Camel java DSL aggregator
,我希望completionTimeout
和completionSize
一起玩得很好(无论哪个触发器首先应该完成聚合)。< / 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)