Инициализируйте SimpleMessageListenerContainer как остановленный
-
21-12-2019 - |
Вопрос
Есть ли способ инициализировать SimpleMessageListenerContainer
как остановились?
т.е.Я не хочу использовать какие-либо сообщения JMS до тех пор, пока пользователь не выполнит действие для запуска контейнера JMS
Я пытался дозвониться .stop()
как только я создам компонент...но, похоже, еще слишком рано.
Вызов stop/start позже работает нормально, но я не хочу рисковать обработкой каких-либо сообщений до тех пор, пока пользователь не будет готов.
Решение
То SimpleMessageListenerContainer
реализует SmartLifecycle
интерфейс.Этот интерфейс определяет метод isAutoStartup
.Когда этот метод возвращает true
компонент запустится автоматически.
Большинство компонентов, реализующих SmartLifecycle
интерфейс также имеет метод setAutoStartup
чтобы разрешить установку этого свойства.Устанавливая его в false
отключит автоматический запуск компонента.
<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
<property name="autoStartup" value="false" />
// Other Properties initialization
</bean>
Или в конфигурации Java
@Bean
public SimpleMessageListenerContainer container() {
SimpleMessageListenerContainer smlc = new SimpleMessageListenerContainer();
smlc.setAutoStartup(false);
...
return smlc;
}
На данный момент невозможно установить это свойство с помощью пространства имен jms.