首页 > 解决方案 > RabbitMQ - 需要关闭所有连接,但 close_all_connections 不起作用

问题描述

我们有一组运行 Windows 应用程序的客户端 PC,该应用程序是打开与 Windows 2016 服务器上运行的 RabbitMQ 3.7.7 (Erlang 20.3) 实例的连接的客户端。

我们的客户端应用程序在启动时打开一个连接。如果它无法打开连接,因为出现错误(例如在 RabbitMQ 上已达到最大连接限制),它会显示错误消息。

我们的应用程序中有一个错误,它有时会使连接保持打开状态。我们(还)无法修复这个错误,因为在 1 月 1 日这一天修补应用程序是不可能的

所以很自然地我们想告诉 RabbitMQ 关闭所有的连接(我们可以在一夜之间完成 - 没有人应该让应用程序在一夜之间运行 - 但如果我们在白天关闭它们并不重要:RabbitMQ 相关的特性直到下个月中旬才需要或使用客户端应用程序,除了打开连接,不能关闭)。

但是重新启动 RabbitMQ 会使它们全部打开。而且rabbitmqctl close_all_connections --global也不会关闭连接(也许它会向客户端发送关闭消息,但如果客户端不再监听,则保持连接打开)。

我们可以做些什么来强制 RabbitMQ 关闭所有连接,而不用在 Erlang 中编写我们自己的应用程序来终止进程?

[更新:我们现在将以正确的方式修复它,但也许应该将问题留在这里以防它对其他人有所帮助?]

标签: rabbitmqrabbitmqctl

解决方案


推荐阅读