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
try { try {
Message requestMessage = messageCreator.createMessage(session); Message requestMessage = messageCreator.createMessage(session);
producer = session.createProducer(destination); producer = session.createProducer(destination);
if (!useCorrelationId) {
consumer = session.createConsumer(responseQueue);
}
requestMessage.setJMSReplyTo(responseQueue); requestMessage.setJMSReplyTo(responseQueue);
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("Sending created message: " + requestMessage); logger.debug("Sending created message: " + requestMessage);
} }
doSend(producer, requestMessage); doSend(producer, requestMessage);
String messageSelector = null; if (consumer == null) { // useCorrelationId=true
if (useCorrelationId) {
String correlationId = requestMessage.getJMSCorrelationID(); String correlationId = requestMessage.getJMSCorrelationID();
if (correlationId == null) { if (correlationId == null) {
correlationId = requestMessage.getJMSMessageID(); correlationId = requestMessage.getJMSMessageID();
} }
messageSelector = "JMSCorrelationID='" + correlationId + "'"; String messageSelector = "JMSCorrelationID='" + correlationId + "'";
consumer = session.createConsumer(responseQueue, messageSelector);
} }
consumer = session.createConsumer(responseQueue, messageSelector);
return receiveFromConsumer(consumer, getReceiveTimeout()); return receiveFromConsumer(consumer, getReceiveTimeout());
} }
finally { finally {

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

@ -648,7 +648,7 @@ class JmsTemplateTests {
given(localSession.createTemporaryQueue()).willReturn(replyDestination); given(localSession.createTemporaryQueue()).willReturn(replyDestination);
MessageConsumer messageConsumer = mock(); MessageConsumer messageConsumer = mock();
given(localSession.createConsumer(replyDestination, null)).willReturn(messageConsumer); given(localSession.createConsumer(replyDestination)).willReturn(messageConsumer);
TextMessage request = mock(); TextMessage request = mock();
MessageCreator messageCreator = mock(); MessageCreator messageCreator = mock();

Loading…
Cancel
Save