【问题标题】:Initialise SimpleMessageListenerContainer as stopped将 SimpleMessageListenerContainer 初始化为已停止
【发布时间】:2017-04-06 05:07:20
【问题描述】:

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

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

我尝试在创建 bean 后立即致电 .stop()...但似乎为时过早。

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

【问题讨论】:

  • autoStartup 设置为false
  • 糟了!应该更彻底地阅读 javadoc。谢谢
  • 添加了一个答案(比评论更广泛:))。

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


【解决方案1】:

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 配置中

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 2020-12-25
    • 2016-11-25
    相关资源
    最近更新 更多