C# 检查Rabbit MQ是否已关闭
我正在编写一个C#控制台应用程序(Windows计划任务)来监视Rabbit MQ的状态。因此,如果队列关闭(服务关闭、连接超时或任何其他原因),它将发送通知邮件。我使用了RabbitMQ.Net客户端(版本4.1.1)。基本上,我正在检查CreateConnection()是否成功C# 检查Rabbit MQ是否已关闭,c#,rabbitmq,C#,Rabbitmq,我正在编写一个C#控制台应用程序(Windows计划任务)来监视Rabbit MQ的状态。因此,如果队列关闭(服务关闭、连接超时或任何其他原因),它将发送通知邮件。我使用了RabbitMQ.Net客户端(版本4.1.1)。基本上,我正在检查CreateConnection()是否成功 private static void CheckRabbitMQStatus() { ConnectionFactory factory = new ConnectionFactory(); fa
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#解决方案。如果您有一个简单的消息队列设置(没有集群或多台机器的联合),它应该可以工作 RabbitMQ API有一个有效性检查,设计用于监视工具,如您的工具。它实际上发送和接收一条消息。这可能是一个比你更敏感的健康检查。请参阅此处的最后一项 RabbitMQ本身是健壮的。通常,它遇到的故障模式是由于其他原因重新启动主机
注意:在Windows Marketplace中有Rob Three的一个不错的模板。这使得您可以很容易地将健康检查作为一项服务,而不是一项计划任务。当我重构我的MQ组件,使其作为服务而不是计划任务运行时,我的生活变得更加轻松。ex的具体类型是什么?比较消息可能会在以后的版本中中断…异常类型为
RabbitMQ.Client.Exceptions.brokerRunReachableException
——也就是说,该消息与2020年8月的消息相同\_(ツ)_/¯