diff --git a/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java b/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java index 0cf8840dec0..8194e93f8b4 100644 --- a/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java +++ b/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java @@ -957,20 +957,22 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations try { Message requestMessage = messageCreator.createMessage(session); producer = session.createProducer(destination); + if (!useCorrelationId) { + consumer = session.createConsumer(responseQueue); + } requestMessage.setJMSReplyTo(responseQueue); if (logger.isDebugEnabled()) { logger.debug("Sending created message: " + requestMessage); } doSend(producer, requestMessage); - String messageSelector = null; - if (useCorrelationId) { + if (consumer == null) { // useCorrelationId=true String correlationId = requestMessage.getJMSCorrelationID(); if (correlationId == null) { correlationId = requestMessage.getJMSMessageID(); } - messageSelector = "JMSCorrelationID='" + correlationId + "'"; + String messageSelector = "JMSCorrelationID='" + correlationId + "'"; + consumer = session.createConsumer(responseQueue, messageSelector); } - consumer = session.createConsumer(responseQueue, messageSelector); return receiveFromConsumer(consumer, getReceiveTimeout()); } finally { diff --git a/spring-jms/src/test/java/org/springframework/jms/core/JmsTemplateTests.java b/spring-jms/src/test/java/org/springframework/jms/core/JmsTemplateTests.java index 6390e9d76a2..017642674b3 100644 --- a/spring-jms/src/test/java/org/springframework/jms/core/JmsTemplateTests.java +++ b/spring-jms/src/test/java/org/springframework/jms/core/JmsTemplateTests.java @@ -648,7 +648,7 @@ class JmsTemplateTests { given(localSession.createTemporaryQueue()).willReturn(replyDestination); MessageConsumer messageConsumer = mock(); - given(localSession.createConsumer(replyDestination, null)).willReturn(messageConsumer); + given(localSession.createConsumer(replyDestination)).willReturn(messageConsumer); TextMessage request = mock(); MessageCreator messageCreator = mock();