如何在使用出站通道适配器发送JMSMessageId后获取它?

时间:2016-04-06 13:06:02

标签: spring-integration

我正在发送带有出站通道适配器的JMS消息,如下所示:

<intjms:outbound-channel-adapter
      destination-name="MY.QUEUE"
      connection-factory="myConnectionFactory"
      channel="mySender"/>

在此之后,我需要知道JMS消息ID。我怎么能得到它?

There is我可以在适配器中提供自定义JmsTemplate的方法,但也许有一个更简单的解决方案来解决这个问题。

我无法使用网关,因为没有响应。

1 个答案:

答案 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()