如何启动,停止和重新连接spring rabbitmq监听器容器及其连接?

whi*_*exx 4 spring-rabbit spring-amqp spring-boot spring-rabbitmq

我有一个互联网连接,其中出口网关定期更改.在发生这种情况之前的几秒钟,我正在向我的spring应用程序收到一个事件或回调通知.我想停止我的兔子消费者和连接,然后在几秒钟后(当我的网络连接恢复时)再次连接.

我正在使用spring amqp的基于注释的方法,但我也可以切换到另一种实现方式.

我知道spring-amqp正在为我重新连接,但我想自己做这件事来控制它.我如何以编程方式彻底清除所有消费者(RabbitListeners)以及与rabbitmq代理的干净连接以及所有消费者的干净连接和启动?如果消费者能够重新创建,那就好了.如果这是不可能的,我将不得不重新初始化一些对象属性.

Gar*_*ell 7

您可以@AutowireRabbitListenerEndpointRegistry并呼吁stop()停止所有@RabbitListener实例.

然后调用resetConnection()连接工厂关闭连接.

然后重新启动注册表将导致重新建立​​连接.