@Router in Spring与注释集成(请求/回复)

时间:2014-12-15 09:53:35

标签: spring annotations integration spring-integration router

您能提供在Spring Integration中路由消息的任何示例吗?按有效负载消息,标题或类似内容进行过滤:

<int:payload-type-router input-channel="routingChannel">
<int:mapping type="java.lang.String"  channel="channel1" />
<int:mapping type="java.lang.Integer" channel="channel2" />
</int:payload-type-router>

响应如何运作?我的意思是,如果我发送:

频道 - &gt;路由器 - &gt;变压器 - &gt;网关

很简单,但我正在寻找类似于这个例子的东西:

<int:router input-channel="inChannel" expression="payload.paymentType">
<int:mapping value="CASH" channel="cashPaymentChannel"/>
<int:mapping value="CREDIT" channel="authorizePaymentChannel"/>
<int:mapping value="DEBIT" channel="authorizePaymentChannel"/>
</int:router>

当我的网关收到消息并将响应发送到回复频道时。如何在路由器中通知什么是正确的回复频道?

1 个答案:

答案 0 :(得分:3)

@Router方法只返回消息将被路由到的频道或频道名称。

@Router(inputChannel="routingChannel")
public String route(Object payload) {
    if (payload instanceof String() {
        return "channel1";
    }
    ...
}

对于你的第二个问题,你需要展示更多的流量;什么是&#34;上游&#34; channel的?

您可以从网关中省略reply-channel(或从其他类型的最终回复生成消费者中省略output-channel),并且回复将被发送到其中的频道消息的reply-channel标题;启动请求/回复方案(sendAndReceive中的入站网关,消息传递网关,MessagingTemplate方法)的框架组件会自动设置此标头,因此您无需执行任何操作;它只是有效。