您能提供在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>
当我的网关收到消息并将响应发送到回复频道时。如何在路由器中通知什么是正确的回复频道?
答案 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
方法)的框架组件会自动设置此标头,因此您无需执行任何操作;它只是有效。