即使应用程序没有正常结束,也要关闭RabbitMQ连接

use*_*566 5 c# rabbitmq

我使用RabbitMQ.Client(运行时版本v2.0.50727,版本2.8.1.0)和C#.NET应用程序.

我创建这样的连接:

using (IConnection connection = _factory.CreateConnection())
{
    using (IModel channel = connection.CreateModel())
    {
        // code...
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我正确关闭应用程序,它只是关闭通道和连接.但是如果应用程序关闭不正确(例如,在PC上按下重启按钮),则不是.我想确保在我启动应用程序之前关闭所有不必要的连接(来自之前的会话甚至其他应用程序,如果错误的其他应用程序实例正在其他地方运行).

我知道我可能会使用心跳,但我的应用程序可能需要很长时间才能开始做任何事情(打开连接数小时而不使用).所以我认为心跳不是最好的事情.

如何关闭RMQ的所有打开的连接?(或者,更好的是,所有打开的连接,除了一个给定的IP)?

问候!

tim*_*ath 1

听起来心跳是你最好的解决方案。出于同样的原因(非正常关闭),我向 RabbitMQ 应用程序添加了心跳。消息之间的时间间隔很长并不重要,心跳只会验证双方的连接是否仍然打开。