Restore early MessageConsumer creation for temporary queue

Closes gh-36321
This commit is contained in:
Juergen Hoeller
2026-02-13 13:55:08 +01:00
parent 47a2e7059e
commit 75705bcbb1
2 changed files with 7 additions and 5 deletions
@@ -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 {
@@ -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();