1
我在异步模式下使用弹簧集成类JmsOutboundGateway。来自文档:使用JmsOutboundGateway异步模式与MessageId,而不是CorrelationID
异步需要一个
<reply-listener/>
它还需要指定一个correlationKey(通常为JMSCorrelationID)。如果这些条件中的任何一个不满足,则会忽略异步。
但是,接收我的请求并发送响应的系统将JMSMessageId从请求消息写入JMSCorrelationID作为响应。如果将由JmsOutboundGateway JMSCorrelationID生成的副本生成到JMSMessageId,我可以解决此问题。我怎样才能做到这一点的弹簧集成(春季版集成的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>
JMS 2.0中有一个新的API:'send(Message message,CompletionListener completionListener)'。我们可以在TX被提交给容器中的异步回复之前,依靠'CompletionListener'回调。奥尔加,你的客户应该考虑如果不是空的话,不要覆盖'JMSCorrelationID'。 –
您的客户端应该考虑如果JMSCorrelationID不为空,则不要覆盖JMSCorrelationID - 您的意思是应用程序为我的请求发送响应? –