我正在发送带有出站通道适配器的JMS消息,如下所示:
<intjms:outbound-channel-adapter
destination-name="MY.QUEUE"
connection-factory="myConnectionFactory"
channel="mySender"/>
在此之后,我需要知道JMS消息ID。我怎么能得到它?
There is我可以在适配器中提供自定义JmsTemplate
的方法,但也许有一个更简单的解决方案来解决这个问题。
我无法使用网关,因为没有响应。
答案 0 :(得分:0)
您可以将JMS xpath
作为Message
的Spring Integration Message发送到该适配器。成功发送后使用payload
。
<强>更新强>
但是这意味着我不能使用JmsTemplate的便利性并且必须自己处理javax.jms.Connection和javax.jms.Session以便能够创建一个javax.jms.Message,对吗?
好吧,没有人禁止你直接使用getJMSMessageID()
作为一般JmsTemplate
的参考。目标是<service-activator>
单向。所以它真的无意返回任何东西。你的角落案件确实需要做点什么。这就是创建JMS消息的<outbound-channel-adapter>
钩子和技巧,以便能够在之后检索其javax.jms.Session
。自定义ID
上有一个ThreadLocal
洞,其JmsHeaderMapper
实施中的消息访问权限,但我认为对于这种情况,最好直接使用fromHeaders()
。