我在异步模式下使用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>
答案 0 :(得分:0)
目前的限制是使用这种相关风格与异步不兼容,只阻止发送/接收。
问题是我们在收到消息ID之前可能会收到回复,因此我们不知道如何关联它。
我只是快速浏览了一下代码,如果你想open an 'Improvement' JIRA Issue我们会看一下,我认为这样做太难了。