diff --git a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsGateway.java b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsGateway.java index cd37b0582e..460836fea8 100644 --- a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsGateway.java +++ b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsGateway.java @@ -109,7 +109,7 @@ public class JmsGateway extends SimpleMessagingGateway implements Lifecycle, Dis } MessageListenerAdapter listener = new MessageListenerAdapter(); listener.setDelegate(this); - listener.setDefaultListenerMethod(this.expectReply ? "request" : "send"); + listener.setDefaultListenerMethod(this.expectReply ? "sendAndReceive" : "send"); listener.setMessageConverter(this.messageConverter); this.container.setMessageListener(listener); if (!this.container.isActive()) { diff --git a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsGatewayParser.java b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsGatewayParser.java index de0e5bc449..3f925490d0 100644 --- a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsGatewayParser.java +++ b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsGatewayParser.java @@ -102,6 +102,9 @@ public class JmsGatewayParser extends AbstractSingleBeanDefinitionParser { if (StringUtils.hasText(replyTimeout)) { builder.addPropertyValue("replyTimeout", Long.parseLong(replyTimeout)); } + if ("true".equals(element.getAttribute("expect-reply"))) { + builder.addPropertyValue("expectReply", Boolean.TRUE); + } } } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/gateway/SimpleMessagingGateway.java b/spring-integration-core/src/main/java/org/springframework/integration/gateway/SimpleMessagingGateway.java index 4f1d8b68b3..faadf100fc 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/gateway/SimpleMessagingGateway.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/gateway/SimpleMessagingGateway.java @@ -21,6 +21,7 @@ import org.springframework.integration.message.DefaultMessageCreator; import org.springframework.integration.message.DefaultMessageMapper; import org.springframework.integration.message.Message; import org.springframework.integration.message.MessageCreator; +import org.springframework.integration.message.MessageDeliveryException; import org.springframework.integration.message.MessageMapper; import org.springframework.util.Assert; @@ -59,13 +60,14 @@ public class SimpleMessagingGateway extends MessagingGatewaySupport { this.messageMapper = messageMapper; } - public boolean send(Object object) { + public void send(Object object) { Message message = (object instanceof Message) ? (Message) object : this.messageCreator.createMessage(object); - if (message == null) { - return false; + if (message != null) { + if (!this.getRequestReplyTemplate().send(message)) { + throw new MessageDeliveryException(message, "failed to send Message to channel"); + } } - return this.getRequestReplyTemplate().send(message); } public Object receive() {