Spring AMQP ListenerContainer生命周期管理

时间:2015-11-21 16:08:18

标签: spring spring-amqp spring-rabbitmq

我们正在使用Spring AMQP连接到基于Spring的Web应用程序中的RabbitMQ。

当我们在应用程序上下文中将侦听器容器声明为bean(使用@PostConstruct)时,它们的生命周期由Spring管理。

如果我们在org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer方法内的组件中声明一个侦听器容器,或者我们创建一个类@PostConstruct作为原型范围bean的bean,那么我们必须管理生命周期,即启动和自己停止听众容器。

我的问题是,如果我们在listener.stop/shutdown/destroy方法中声明新的队列,绑定和侦听器容器,只需在相应的@PreDestroy方法中调用@PostContruct方法就足够优雅了关掉?或者我需要做什么?

注意:我猜我不需要为<div id="swiffycontainer" style="width: 100%; height: auto;"> </div> 中创建的新队列和绑定做任何事情,但如果您也为我确认这一点,我将非常高兴。

1 个答案:

答案 0 :(得分:1)

我不建议在@PostConstruct方法中启动侦听器容器或声明队列/绑定;当时的背景只是半生不熟。它可能有用,但在初始化上下文时不建议做类似的事情。

最好在SmartLifecycle方法中实施start()/stop()并启动/停止它们。

然后,容器生命周期将由spring上下文间接管理。

您还可以通过将bean置于阶段来准确控制bean的启动/停止时间。