我正在编写一个 C# 控制台应用程序(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
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是实现这一目标的正确方法吗?有多种可用于 Rabbit MQ 的工具和插件,但我想要一个简单的 C# 解决方案。
如果您有一个简单的消息队列设置(没有多台机器的集群或联合),它应该可以工作。
RabbitMQ API 具有活动性检查,专为诸如您的监控工具而设计。它实际上发送和接收消息。这可能是比您的健康检查更敏感的健康检查。请参阅此处的最后一项。
https://www.rabbitmq.com/monitoring.html#health-checks
RabbitMQ 本身很强大。通常,它遇到的故障模式是其主机因其他原因重新启动。
注意: Windows Marketplace 中有 Rob Three 提供的一个不错的DebuggableService模板。这使得将健康检查作为一项服务而不是一项计划任务变得非常容易。当我重构 MQ 内容以作为服务而不是计划任务运行时,我的生活变得更加轻松。
| 归档时间: |
|
| 查看次数: |
7804 次 |
| 最近记录: |