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

Spring integration 如何在使用出站通道适配器发送JMSMessageId后获取它?,spring-integration,Spring Integration,我使用出站通道适配器发送JMS消息,如下所示: <intjms:outbound-channel-adapter destination-name="MY.QUEUE" connection-factory="myConnectionFactory" channel="mySender"/> 在此之后,我需要知道JMS消息Id。如何获取它 我可以在适配器中提供一种在自定义JmsTemplate中执行此操作的方法,但可能有一种更简单的解决方案来

我使用出站通道适配器发送JMS消息,如下所示:

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

在此之后,我需要知道JMS消息Id。如何获取它

我可以在适配器中提供一种在自定义
JmsTemplate
中执行此操作的方法,但可能有一种更简单的解决方案来解决此问题


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

您可以将JMS
消息作为Spring集成消息的
有效负载
发送到该适配器。并在成功发送后使用其
getJMSMessageID()

更新


但这意味着我不能使用JmsTemplate的便利性,必须自己处理javax.jms.Connection和javax.jms.Session才能创建javax.jms.Message,对吗


嗯,没有人禁止您直接使用
JmsTemplate
作为常规
的参考。根据目标,
是单向的。所以它真的不打算归还任何东西。你的案子真的需要做点什么。这就是
javax.jms.Session
钩子和技巧,用于创建jms消息,以便能够在以后检索其
ID
。自定义
JmsHeaderMapper
及其
fromHeaders()实现的消息访问上方有一个
ThreadLocal
孔,但我认为对于这种情况,最好直接使用
JmsTemplate

您可以将JMS
消息作为Spring集成消息的
有效负载
发送到该适配器。并在成功发送后使用其
getJMSMessageID()

更新


但这意味着我不能使用JmsTemplate的便利性,必须自己处理javax.jms.Connection和javax.jms.Session才能创建javax.jms.Message,对吗


嗯,没有人禁止您直接使用
JmsTemplate
作为常规
的参考。根据目标,
是单向的。所以它真的不打算归还任何东西。你的案子真的需要做点什么。这就是
javax.jms.Session
钩子和技巧,用于创建jms消息,以便能够在以后检索其
ID
。自定义
JmsHeaderMapper
及其
fromHeaders()实现的消息访问上方有一个
ThreadLocal
孔,但我认为在这种情况下,最好直接使用
JmsTemplate

但这意味着我不能使用
JmsTemplate
的便利性,必须自己处理
javax.jms.Connection
javax.jms.Session
,才能创建
javax.jms.Message
,对吗?请,在我的答案中找到更新。但这意味着我不能使用
JmsTemplate
的便利性,必须自己处理
javax.jms.Connection
javax.jms.Session
才能创建
javax.jms.Message
,对吗?请在我的答案中找到更新。