diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainer.java index 1b24e67e07..d0097a747a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainer.java @@ -43,6 +43,7 @@ * * @author Christoph Strobl * @author Mark Paluch + * @author Junhyeok Lee * @since 2.1 */ public class DefaultMessageListenerContainer implements MessageListenerContainer { @@ -62,6 +63,7 @@ public class DefaultMessageListenerContainer implements MessageListenerContainer private final Lock subscriptionWrite = Lock.of(subscriptionMonitor.writeLock()); private boolean running = false; + private boolean autoStartup = true; /** * Create a new {@link DefaultMessageListenerContainer}. @@ -105,7 +107,16 @@ public DefaultMessageListenerContainer(MongoTemplate template, Executor taskExec @Override public boolean isAutoStartup() { - return false; + return this.autoStartup; + } + + /** + * Set whether to auto-start this container. + *
Default is {@code true}. + * @param autoStartup {@code true} to auto-start. + */ + public void setAutoStartup(boolean autoStartup) { + this.autoStartup = autoStartup; } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerUnitTests.java index 4df47b1c51..d8e12b6d7f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerUnitTests.java @@ -36,6 +36,7 @@ * Unit tests for {@link DefaultMessageListenerContainer}. * * @author Christoph Strobl + * @author Junhyeok Lee */ @ExtendWith(MockitoExtension.class) class DefaultMessageListenerContainerUnitTests { @@ -80,6 +81,17 @@ void removeSubscriptionWhileRunning() throws Throwable { runOnce(new RemoveSubscriptionWhileRunning(container)); } + @Test // GH-4403 + void shouldHaveAutoStartupEnabledByDefault() { + assertThat(container.isAutoStartup()).isTrue(); + } + + @Test // GH-4403 + void shouldAllowDisablingAutoStartup() { + container.setAutoStartup(false); + assertThat(container.isAutoStartup()).isFalse(); + } + private static class RemoveSubscriptionWhileRunning extends MultithreadedTestCase { DefaultMessageListenerContainer container;