我希望结合两个webservice调用的响应。聚合将基于响应中的键值发生。
ws1,ws2(来自ws1和ws2的响应被传递给聚合器)--->聚合器--->响应。 我返回以下代码。聚合器未被调用,不确定我缺少什么。
<int-ws:outbound-gateway id="marshallingGateway1" request-channel="RequestChannel1" reply-channel="replyChannel"
uri="https://abc:8080/" message-sender="messageSender"
marshaller="marshaller" unmarshaller="marshaller">
<int-ws:request-handler-advice-chain>
<ref bean="retryAdvice"/>
</int-ws:request-handler-advice-chain>
</int-ws:outbound-gateway>
<int-ws:outbound-gateway id="marshallingGateway2" request-channel="RequestChannel2" reply-channel="replyChannel"
uri="https://abc:8080/" message-sender="messageSender"
marshaller="marshaller" unmarshaller="marshaller">
<int-ws:request-handler-advice-chain>
<ref bean="retryAdvice"/>
</int-ws:request-handler-advice-chain>
</int-ws:outbound-gateway>
<int:aggregator id="responseAggregator" input-channel="replyChannel" ref="responseAggregator" message-store="messageStore" send-partial-result-on-expiry="true"/>
<bean id="messageStore" class="org.springframework.integration.store.SimpleMessageStore"/>
<bean id="responseAggregator" class="abc.cbd.ResponseAggregator"/>
答案 0 :(得分:1)
您似乎没有在两个结果之间建立任何相关性。
默认情况下,默认关联策略使用标头correlationId
。
您还需要ReleaseStrategy
。它可以像release-strategy-expression="size == 2"
一样简单。
默认发布策略使用sequenceSize
和sequenceNumber
标题。
如果您使用发布 - 订阅频道向两个网关发送相同的消息,请将apply-sequence
属性设置为true
,然后您不需要自定义发布或关联策略。