我有一个互联网连接,其中出口网关会定期更改。在发生这种情况之前的几秒钟,我正在向我的spring应用程序收到一个事件或回调通知。我想停止我的兔子消费者和连接,然后在几秒钟后重新连接(当我的网络连接恢复时)。
我正在使用spring amqp的基于注释的方法,但我也可以切换到另一种实现方式。
我知道spring-amqp正在为我重新连接,但我想自己做这件事来控制它。 我如何以编程方式彻底清除所有消费者(RabbitListeners)以及与rabbitmq代理的干净连接以及所有消费者的干净连接和启动?如果消费者能够重新创建,那就好了。如果这是不可能的,我将不得不重新初始化一些对象属性。
答案 0 :(得分:5)
您可以@Autowire
RabbitListenerEndpointRegistry
并致电stop()
停止所有@RabbitListener
个实例。
然后在连接工厂上调用resetConnection()
以关闭连接。
重新启动注册表将导致重新建立连接。