3

RabbitMQ 文档介绍了如何添加关闭侦听器以及何时调用侦听器,但我看不到处理程序的用途。似乎所有的 Java 示例(包括https://github.com/rabbitmq/rabbitmq-tutorials)都忽略了关闭处理程序。在哪些情况下,我应该更喜欢关闭侦听器而不是简单地捕获ShutdownSignalException(和IOException)异常?

另一个令人费解的问题是当处理程序完成时控制流去哪里。

可能相关的 SO 问题:

4

2 回答 2

4

捕获 IOException 可以告诉您是否由于方法调用而导致连接/通道关闭,但连接/通道也可以不由自主地关闭,例如与服务器的连接丢失。在这种情况下,ShutdownListener 是了解连接/通道关闭的唯一方法。

关闭侦听器通常用于提供连接/通道恢复,尽管可靠地恢复本身就是一个挑战。为此,请查看Lyra

于 2013-10-24T20:24:23.783 回答
2

ShutdownListener我见过的主要用途是自动重新连接。您监听关机,当它发生时,尝试重新连接。

例如,这是rabbitmq-ha-client的基础,它在HaConnectionFactory.HaShutdownListener中完成。

于 2013-10-24T20:35:11.233 回答