Browse Source

Restore early MessageConsumer creation for temporary queue

Closes gh-36321
pull/36325/head
Juergen Hoeller 1 month ago
parent
commit
75705bcbb1
  1. 10
      spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java
  2. 2
      spring-jms/src/test/java/org/springframework/jms/core/JmsTemplateTests.java

10
spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java

@ -957,20 +957,22 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations @@ -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 {

2
spring-jms/src/test/java/org/springframework/jms/core/JmsTemplateTests.java

@ -648,7 +648,7 @@ class JmsTemplateTests { @@ -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();

Loading…
Cancel
Save