diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/ConsumerEndpointFactoryBean.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/ConsumerEndpointFactoryBean.java index 77cbc072ad..36f1e4f6ff 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/ConsumerEndpointFactoryBean.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/ConsumerEndpointFactoryBean.java @@ -34,6 +34,7 @@ import org.springframework.integration.endpoint.EventDrivenConsumer; import org.springframework.integration.message.MessageHandler; import org.springframework.integration.scheduling.IntervalTrigger; import org.springframework.integration.scheduling.Trigger; +import org.springframework.integration.util.LifecycleSupport.AutoStartMode; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionDefinition; import org.springframework.util.Assert; @@ -55,6 +56,8 @@ public class ConsumerEndpointFactoryBean implements FactoryBean, BeanFactoryAwar private volatile long receiveTimeout = 1000; + private volatile boolean autoStartup = true; + private volatile TaskExecutor taskExecutor; private volatile PlatformTransactionManager transactionManager; @@ -92,6 +95,10 @@ public class ConsumerEndpointFactoryBean implements FactoryBean, BeanFactoryAwar this.receiveTimeout = receiveTimeout; } + public void setAutoStartup(boolean autoStartup) { + this.autoStartup = autoStartup; + } + public void setTaskExecutor(TaskExecutor taskExecutor) { this.taskExecutor = taskExecutor; } @@ -169,6 +176,9 @@ public class ConsumerEndpointFactoryBean implements FactoryBean, BeanFactoryAwar throw new IllegalArgumentException( "unsupported channel type: [" + channel.getClass() + "]"); } + if (!this.autoStartup) { + this.endpoint.setAutoStartMode(AutoStartMode.NONE); + } this.endpoint.setBeanName(this.beanName); this.endpoint.setBeanFactory(this.beanFactory); if (this.endpoint instanceof InitializingBean) { diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java index cf6e654fb2..74f0976893 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java @@ -112,6 +112,7 @@ public abstract class AbstractConsumerEndpointParser extends AbstractSingleBeanD } IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, pollerElement, "task-executor"); } + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "auto-startup"); this.postProcess(element, parserContext, builder); } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/spring-integration-1.0.xsd b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/spring-integration-1.0.xsd index 9438542cf0..38f5859689 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/spring-integration-1.0.xsd +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/spring-integration-1.0.xsd @@ -229,6 +229,7 @@ +