spring-集成聚合来自出站网关的响应
spring-integration aggregate responses from outbound-gateway
我希望合并来自两个网络服务调用的响应。聚合将基于响应中的关键值发生。
ws1,ws2(来自 ws1 和 ws2 的响应被传递给聚合器)--->聚合器--->响应。
我return下面的代码。没有调用聚合器,不确定我缺少什么。
<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"/>
您似乎没有在两个结果之间建立任何相关性。
默认情况下,默认关联策略使用header correlationId
。
你还需要一个ReleaseStrategy
。它可以像 release-strategy-expression="size == 2"
.
一样简单
默认发布策略使用sequenceSize
和sequenceNumber
headers.
如果您使用 publish-subscribe 通道向两个网关发送相同的消息,请将 apply-sequence
属性 设置为 true
然后您就不会需要自定义发布或关联策略。
我希望合并来自两个网络服务调用的响应。聚合将基于响应中的关键值发生。
ws1,ws2(来自 ws1 和 ws2 的响应被传递给聚合器)--->聚合器--->响应。 我return下面的代码。没有调用聚合器,不确定我缺少什么。
<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"/>
您似乎没有在两个结果之间建立任何相关性。
默认情况下,默认关联策略使用header correlationId
。
你还需要一个ReleaseStrategy
。它可以像 release-strategy-expression="size == 2"
.
默认发布策略使用sequenceSize
和sequenceNumber
headers.
如果您使用 publish-subscribe 通道向两个网关发送相同的消息,请将 apply-sequence
属性 设置为 true
然后您就不会需要自定义发布或关联策略。