我有两个jms:入站网关,它们侦听两个不同的队列管理器/队列,但是共享相同的入站/错误/出站通道。一旦收到并处理了消息,网关就必须基于JMSReplyTo标头进行响应(处理的方式与我们在不同主机上拥有队列管理器的方式相同)。由于出站通道相同,因此网关将如何区分要发送的响应队列。那么问题是网关是否维护自己的通道实例?如果不是,我应该为两个网关设置不同的入站/错误/出站通道集,以便发送者获得正确的响应或有更好的解决方案。请指教。
<int-jms:inbound-gateway id="test1"
request-channel="inbouldChannel"
reply-channel="outboundChannel"
error-channel="errorChannel"
header-mapper="headerMapper"
container="listenerContainer1"/>
<int-jms:inbound-gateway id="test2"
request-channel="inbouldChannel"
reply-channel="outboundChannel"
error-channel="errorChannel"
header-mapper="headerMapper"
container="listenerContainer2"/>
它们使用相同的请求通道实例;但它们会在replyChannel
每封邮件的标题中添加一个唯一的临时回复渠道。
您应该reply-channel
在网关上省略该属性,并且不要output-channel
在处理消息的最后一个端点上提供。然后,框架将使用标头将回复路由到正确的网关。
即使使用您的配置,它实际上也可以工作(因为最终它被桥接到在任何网关接收到答复的报头通道中),但是reply-channel
在两个网关上都具有相同的外观看起来很奇怪。
最干净的解决方案是仅忽略属性,并让框架负责路由。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句