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".

一样简单

默认发布策略使用sequenceSizesequenceNumber headers.

如果您使用 publish-subscribe 通道向两个网关发送相同的消息,请将 apply-sequence 属性 设置为 true 然后您就不会需要自定义发布或关联策略。