From ffff7d7c12ca1eb12004f3b899f5c810e68999c8 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Thu, 28 Sep 2017 12:11:23 -0400 Subject: [PATCH] AMQP-774: Add autoStartup to @RabbitListener JIRA: https://jira.spring.io/browse/AMQP-774 Resolves https://github.com/spring-projects/spring-amqp/issues/669 --- .../amqp/rabbit/annotation/RabbitListener.java | 7 +++++++ ...bbitListenerAnnotationBeanPostProcessor.java | 4 ++++ .../AbstractRabbitListenerContainerFactory.java | 5 ++++- .../AbstractRabbitListenerEndpoint.java | 17 +++++++++++++++++ .../rabbit/listener/RabbitListenerEndpoint.java | 7 +++++++ .../EnableRabbitIntegrationTests.java | 8 +++++--- src/reference/asciidoc/whats-new.adoc | 2 ++ 7 files changed, 46 insertions(+), 4 deletions(-) diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListener.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListener.java index 2aef838e..8eda2048 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListener.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListener.java @@ -233,4 +233,11 @@ public @interface RabbitListener { */ String concurrency() default ""; + /** + * Set to true or false, to override the default setting in the container factory. + * @return true to auto start, false to not auto start. + * @since 2.0 + */ + String autoStartup() default ""; + } diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerAnnotationBeanPostProcessor.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerAnnotationBeanPostProcessor.java index 4f5b29ae..a196b2d3 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerAnnotationBeanPostProcessor.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerAnnotationBeanPostProcessor.java @@ -410,6 +410,10 @@ public class RabbitListenerAnnotationBeanPostProcessor endpoint.setGroup((String) resolvedGroup); } } + String autoStartup = rabbitListener.autoStartup(); + if (StringUtils.hasText(autoStartup)) { + endpoint.setAutoStartup(resolveExpressionAsBoolean(autoStartup)); + } endpoint.setExclusive(rabbitListener.exclusive()); String priority = resolve(rabbitListener.priority()); diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerContainerFactory.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerContainerFactory.java index 360bf616..81f3d71f 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerContainerFactory.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerContainerFactory.java @@ -340,7 +340,10 @@ public abstract class AbstractRabbitListenerContainerFactory> for more information. ===== Container Conditional Rollback