检查Rabbit MQ是否已关闭

时间:2017-01-04 11:47:35

标签: c# rabbitmq

我正在编写一个C#Console应用程序(Windows计划任务)来监视Rabbit MQ的状态。因此,如果队列已关闭(服务中断,连接超时或任何其他原因),它将发送通知邮件。我使用过RabbitMQ .Net客户端(版本4.1.1)。基本上我正在检查CreateConnection()是否成功。

private static void CheckRabbitMQStatus()
{
    ConnectionFactory factory = new ConnectionFactory();
    factory.Uri = "amqp://guest:guest@testserver:5672/";
    IConnection conn = null;
    try
    {
        conn = factory.CreateConnection();
        conn.Close();
        conn.Dispose();
    }
    catch (Exception ex)
    {
        if (ex.Message == "None of the specified endpoints were reachable")
        {
            //send mail MQ is down
        }
    }
}

这是实现这一目标的正确方法吗? Rabbit MQ有几种工具和插件,但我想要一个简单的C#解决方案。

1 个答案:

答案 0 :(得分:2)

如果您有一个简单的消息队列设置(没有多台机器的集群或联合),它应该可以工作。

RabbitMQ API具有活动性检查,旨在供您的监控工具使用。它实际上发送和接收消息。这可能是比您更敏感的健康检查。请参阅此处的最后一项。

http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v2_2_0/priv/www-api/help.html

RabbitMQ本身很强大。通常它遇到的故障模式是由于其他原因重新启动主机。

注意:Windows Marketplace中的Rob Three有一个很好的DebuggableService模板。这使得将健康检查作为服务而不是作为计划任务进行安装非常容易。当我重构我的MQ东西作为服务而不是计划任务运行时,我的生活变得更轻松。