我有一个spring-integration实现,具有以下内容:
问题:聚合器无法将所有响应组合在一起,并且提供的方法在通道的第一个响应上被调用
这是详细信息。汇总响应我该怎么做?
<int:publish-subscribe-channel id="aggregate-channel" apply-sequence="true"/>
<int:publish-subscribe-channel id="input-channel" apply-sequence="true"/>
<int:service-activator input-channel="input-channel" output-channel="aggregate-channel" ref="...A" method="...A">
<int:service-activator input-channel="input-channel" output-channel="aggregate-channel" ref="...B" method="...B">
<int:service-activator input-channel="input-channel" output-channel="aggregate-channel" ref="...C" method="...C">
<int:service-activator input-channel="input-channel" output-channel="aggregate-channel" ref="...D" method="...D">
<!--This is the aggregator.
**Expecting a list of size 4 but then it gets list of size 1 for each response channel
-->
<int:aggregator input-channel="aggregate-channel" output-channel="gateway-response-channel" ref="Service" method="responseListProcessor"/>
答案 0 :(得分:1)
解决方案
<int:publish-subscribe-channel id="aggregate-channel" apply-sequence="true"/>
with
<int:publish-subscribe-channel id="aggregate-channel"/>
问题
4
开始,因为input-channel
有4
个订阅者apply-sequence="true"
添加到aggregate-channel
时,它将序列大小重置为1
,因为aggregate-channel
只有一个订阅者,即aggregator
。参考
如果在PublishSubscribeChannel的下游提供聚合器,则可以将通道上的“ apply-sequence”属性设置为true。
这样做表示在传递消息之前,通道应设置序列大小和序列号消息头以及相关性ID。
例如,如果有五个订户,则序列大小将设置为5,并且消息的序列号标头值将在1到5之间。
答案 1 :(得分:0)
我想说,您的要求已完全满足此类EIP任务的要求-分散收集:http://example.com/add.php?user=me&pass=mypassword