在我的应用程序中,几个 jms:消息驱动通道适配器实例都输出到同一个内部通道。我想将一个不同的标题扩充器与每个通道适配器相关联。有没有办法做到这一点?
以下代码显示了如何将标头扩充器与jms:message-driven-channel-adapter输出到的内部通道相关联:
<jms:message-driven-channel-adapter id="J1" destination="Q1" channel="in1"/>
<int:header-enricher input-channel="in1" output-channel="out1">
<int:header name="fromAdapter" value="1"/>
</int:header-enricher>
但是,这在我的场景中不起作用,其中所有通道适配器都使用相同的内部通道。能够在通道适配器内部定义头部增强器会很好。还有另一种方法可以将适配器和增强器连接在一起吗?
由于
答案 0 :(得分:1)
不同的标题扩充器应该具有不同的输入通道。您可以提供一些路由逻辑,并使用<gateway>
作为标题扩充器的请求 - 回复流程:
<chain input-channel="in1" output-channel="out1">
<gateway request-channel="enrichement"/>
</chain>
<router input-channel="enrichement">
<mapping channel="he1" value=""/>
...
</router>
<header-enricher input-channel="he1">
...
</header-enricher>
<header-enricher input-channel="he2">
...
</header-enricher>
....
<header-enricher input-channel="heN">
...
</header-enricher>
HTH