将SimpleMessageListenerContainer初始化为已停止

时间:2014-06-03 13:01:17

标签: java spring jms spring-boot spring-jms

有没有办法将SimpleMessageListenerContainer初始化为已停止?

即。我不想在以后用户执行操作以启动JMS容器时使用任何JMS消息

我在创建bean后立即尝试调用.stop() ...但似乎为时尚早。

稍后调用停止/启动工作正常,但我不想冒险处理任何消息,直到用户准备好。

1 个答案:

答案 0 :(得分:4)

SimpleMessageListenerContainer实现SmartLifecycle接口。此接口定义方法isAutoStartup。当此方法返回true时,组件将自动启动。

实现SmartLifecycle接口的大多数bean也有一个方法setAutoStartup来允许设置此属性。将其设置为false将禁用组件的自动启动。

<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
    <property name="autoStartup" value="false" />
    // Other Properties initialization
</bean>

或者在Java Config中

@Bean
public SimpleMessageListenerContainer container() {
    SimpleMessageListenerContainer smlc = new SimpleMessageListenerContainer();
    smlc.setAutoStartup(false);
    ...
    return smlc;
}

目前无法使用jms名称空间设置此属性。