Spring-integration聚合来自出站网关的响应

时间:2017-03-20 20:26:13

标签: spring spring-integration aggregator

我希望结合两个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"/>

1 个答案:

答案 0 :(得分:1)

您似乎没有在两个结果之间建立任何相关性。

默认情况下,默认关联策略使用标头correlationId

您还需要ReleaseStrategy。它可以像release-strategy-expression="size == 2"一样简单。

默认发布策略使用sequenceSizesequenceNumber标题。

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