【问题标题】:How to start Spring JMS listener container manually如何手动启动 Spring JMS 侦听器容器
【发布时间】:2015-05-27 02:57:35
【问题描述】:

我有一个使用来自 JMS 队列的消息的服务器端应用程序。我像这样使用 Spring 侦听器容器:

<jms:listener-container connection-factory="myConnectionFactory"
                        ..........
                        concurrency="4-8">
    <jms:listener id="myListener" destination="my.ems.queue" ref="listenerBean" method="method"/>
</jms:listener-container>

这很好用。

其中一个问题是侦听器在设置后立即开始使用 JMS 消息。但是,listenerBean 依赖的一些 bean 需要一些时间来初始化(它需要从数据库中填充一些数据)。

因此,如果服务启动时队列中有一些待处理的 JMS 消息,它会在数据填充完成之前尝试提供服务。这会导致一些错误。

我的问题是,如何才能在数据完全填充后才自动启动侦听器,以便我可以调用start() 方法手动启动它?

【问题讨论】:

    标签: java spring jms


    【解决方案1】:

    您可以在 DMLC 上设置 autoStartup 属性,以防止它启动,直到您选择调用 start()

    另一种方法是确保在其他依赖 bean 准备好之前没有创建连接工厂。

    <bean class="..." name="myConnectionFactory" depends-on="importantOtherBean"/>
    

    【讨论】:

    • @Peter 将 autoStartup 设置为 false 在这种情况下对我没有帮助。即使在手动启动它之前,当收到消息时,我的听众也会一直被触发......您能否查看我的问题以获取更多信息? stackoverflow.com/questions/43207792/…
    猜你喜欢
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 2017-09-01
    相关资源
    最近更新 更多