如何手动启动Spring JMS侦听器容器

时间:2015-03-23 22:39:30

标签: java spring jms

我有一个服务器端应用程序,它使用来自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()方法手动启动它?

1 个答案:

答案 0 :(得分:0)

您可以在DMLC上设置autoStartup属性,以防止它开始,直到您选择致电start()

另一种方法是确保在其他从属bean准备就绪之前未创建连接工厂。

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