我有以下要求: 消息可以出现在几个消息驱动的通道适配器定义之一上,所有这些定义都显然映射到不同的传入队列。
然后,所有通道适配器转发到处理它们的相同内部Spring Integration通道。
如何确定收到的消息到底是哪个渠道适配器 - 因此排队?例如,通道适配器配置中是否有一种方法可以指定在该点将属性添加到消息头中,这将是一种解决方案。 感谢
答案 0 :(得分:1)
一种方法是编写一个ChannelInterceptor来为消息添加标题。 preSend()方法提供Message和MessageChannel作为参数。可以将MessageChannel强制转换为NamedComponent(实现为AbstracMessageChannel的接口)以获取通道名称。
答案 1 :(得分:0)
在每个消息驱动通道适配器之后,您可以使用具有不同标识符的header enrichier。
例如:
<jms:message-driven-channel-adapter id="jmsIn1" destination="inQueue1" channel="in1"/>
<int:header-enricher input-channel="in1" output-channel="out1">
<int:header name="fromAdapter" value="1"/>
</int:header-enricher>
<jms:message-driven-channel-adapter id="jmsIn2" destination="inQueue2" channel="in1"/>
<int:header-enricher input-channel="in2" output-channel="out2">
<int:header name="fromAdapter" value="2"/>
</int:header-enricher>