Spring集成网关路由

时间:2018-01-05 12:32:11

标签: java spring spring-integration

我遇到了弹簧集成的问题基本上我正在尝试创建链,它将调用多个服务中的一个并返回结果作为对链网关的回复以进行进一步处理。

<int:chain input-channel="inputChannel" output-channel="outputChannel">
    <int:header-enricher>
        <int:header name="temporalPayload" expression="payload"/>
        <int:header name="matcher" value="other" />
    </int:header-enricher>
    <int:gateway request-channel="routerChannel" reply-channel="replyChannel" error-channel="errorChannel"/>
    <int:transformer expression="headers.temporalPayload"/>
</int:chain>

<int:router input-channel="routerChannel" expression="headers.matcher.matches('(test)|(test2)')?headers.matcher:'other'" >
    <int:mapping value="test1" channel="channel1"/>
    <int:mapping value="test2" channel="channel2"/>
    <int:mapping value="other" channel="channel3" />
</int:router>

<int:service-activator input-channel="channel1" output-channel="replyChannel" ref="service1" method="handle"/>
<int:service-activator input-channel="channel2" output-channel="replyChannel" ref="service2" method="handle"/>
<int:service-activator input-channel="channel3" output-channel="replyChannel" ref="service3" method="handle"/>

网关未收到对频道的回复的问题&#34; replyChannel&#34;来自服务激活者。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以启用org.springframework.integration类别的DEBUG日志记录级别,并观察您的邮件如何传播。

另一方面,在大多数情况下,您不需要网关上的reply-Channel,只需依赖网关填充的replyChannel标头。在这种情况下,您甚至必须删除output-Channel上的service-activator

您的repjyChannel可能会有一些用户窃取网关的邮件。

您可以尝试不使用reply-Channel或按照我的建议调查日志。