Инициализируйте SimpleMessageListenerContainer как остановленный

StackOverflow https://stackoverflow.com//questions/24015906

Вопрос

Есть ли способ инициализировать 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top