使用JmsOutboundGateway异步模式与MessageId而不是CorrelationID

时间:2017-06-14 14:32:04

标签: spring jms spring-integration

我在异步模式下使用spring-integration类JmsOutboundGateway。来自文档:

  

异步需要<reply-listener/>,它还需要指定correlationKey(通常是JMSCorrelationID)。如果不满足其中任何一个条件,则忽略异步。

但接收我的请求并发送响应的系统会将JMSMessageId从请求消息写入JMSCorrelationID作为响应。如果由JmsOutboundGateway JMSCorrelationID生成的副本到JMSMessageId,我可以解决这个问题。我怎么能在spring-integration中做到这一点(版本spring-integration-jms 4.3.6.RELEASE)

<int-jms:outbound-gateway id="requestGateway"
                          connection-factory="jndiConnectionFactory"

                          request-destination="queueInput"
                          request-channel="channel.request.message"

                          reply-destination="queueOutput"
                          reply-channel="channel.response.message"

                          correlation-key="JMSCorrelationID"
                          async="true">
    <int-jms:reply-listener max-concurrent-consumers=20 
                            concurrent-consumers="10" />
  </int-jms:outbound-gateway>

1 个答案:

答案 0 :(得分:0)

目前的限制是使用这种相关风格与异步不兼容,只阻止发送/接收。

问题是我们在收到消息ID之前可能会收到回复,因此我们不知道如何关联它。

我只是快速浏览了一下代码,如果你想open an 'Improvement' JIRA Issue我们会看一下,我认为这样做太难了。