RabbitMQ客户端如何告诉它何时失去与服务器的连接?

Kel*_*lly 10 rabbitmq

如果我连接到RabbitMQ并使用EventingBasicConsumer监听事件,我怎么知道我是否已经与服务器断开连接?

我知道有一个Shutdown事件,但如果我拔下网线以模拟故障,它就不会触发.

我也尝试了模型上的ModelShutdown事件和CallbackException,但似乎都没有.

编辑-----我标记为答案的那个是正确的,但它只是我解决方案的一部分.RabbitMQ中还内置了HeartBeat功能.服务器在配置文件中指定它.默认为10分钟,但您当然可以更改它.

客户端还可以通过在ConnectionFactory实例上设置RequestedHeartbeat值来请求心跳的不同间隔.

kzh*_*hen 5

我猜你正在使用c#库?(但即便如此,我认为其他人也有类似的事件).

您可以执行以下操作:

public class MyRabbitConsumer
{
  private IConnection connection;

  public void Connect()
  {
    connection = CreateAndOpenConnection();
    connection.ConnectionShutdown += connection_ConnectionShutdown;
  }

  public IConnection CreateAndOpenConnection() { ... }

  private void connection_ConnectionShutdown(IConnection connection, ShutdownEventArgs reason)
  {

  }
}
Run Code Online (Sandbox Code Playgroud)