From e6ffe7dfe12a445b19e05bb98451658a137f8973 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Fri, 12 Dec 2014 11:23:19 -0500 Subject: [PATCH] INT-3579: AMQP Stop the Template if a Lifecycle JIRA: https://jira.spring.io/browse/INT-3579 Implement `Lifecycle` in the AMQP outbound adapter and propagate a `stop()` to the `AmqpTemplate` if it implements `Lifecycle`. Delegate `isRunning()` to the `AmqpTemplate` instead of permanent `true`. --- .../amqp/outbound/AmqpOutboundEndpoint.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AmqpOutboundEndpoint.java b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AmqpOutboundEndpoint.java index fdd36b0f25..94e9f69264 100644 --- a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AmqpOutboundEndpoint.java +++ b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/outbound/AmqpOutboundEndpoint.java @@ -30,6 +30,7 @@ import org.springframework.amqp.support.AmqpHeaders; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.ApplicationListener; +import org.springframework.context.Lifecycle; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; @@ -56,7 +57,8 @@ import org.springframework.util.StringUtils; * @since 2.1 */ public class AmqpOutboundEndpoint extends AbstractReplyProducingMessageHandler - implements RabbitTemplate.ConfirmCallback, ReturnCallback, ApplicationListener { + implements RabbitTemplate.ConfirmCallback, ReturnCallback, + ApplicationListener, Lifecycle { private static final ExpressionParser expressionParser = new SpelExpressionParser(new SpelParserConfiguration(true, true)); @@ -274,6 +276,22 @@ public class AmqpOutboundEndpoint extends AbstractReplyProducingMessageHandler } } + @Override + public void start() { + } + + @Override + public void stop() { + if (this.amqpTemplate instanceof Lifecycle) { + ((Lifecycle) this.amqpTemplate).stop(); + } + } + + @Override + public boolean isRunning() { + return !(this.amqpTemplate instanceof Lifecycle) || ((Lifecycle) this.amqpTemplate).isRunning(); + } + @Override protected Object handleRequestMessage(Message requestMessage) { String exchangeName = this.exchangeName;