繁体   English   中英

如何使用公共交通检测到 rabbit mq 的连接问题?

[英]how to detect connection issues to rabbit mq using mass transit?

如何使用 Mass Transit to RabbitMQ 检测消息代理配置是否有效或与消息代理的连接是否丢失? 当 RabbitMQ 存在时发布消息时,如果没有代理连接,似乎不会立即抱怨,并且似乎在 RabbitMQ 服务器出现时恢复。 有没有办法监听连接事件并在配置无效时发出警告?

如果您使用 .NET Core 并按照文档配置 MassTransit,您可以解析IBusHealth的实例并在您的服务中使用它。

AddMassTransit方法注册默认实例,您可以随时询问总线健康状态。 那是方法代码:

    public HealthResult CheckHealth()
    {
        var endpointHealthResult = _endpointHealth.CheckHealth();

        var data = new Dictionary<string, object> {["Endpoints"] = endpointHealthResult.Data};

        return _healthy && endpointHealthResult.Status == BusHealthStatus.Healthy
            ? HealthResult.Healthy("Ready", data)
            : HealthResult.Unhealthy($"Not ready: {_failureMessage}", data: data);
    }

如您所见,如果您调用busHealth.CheckHealth() ,它将返回HealthyUnhealthy ,在后一种情况下,还会为您提供失败端点的列表。

由于BusHealth仅监视总线本身及其所有接收端点,因此当您的服务未能发布消息时,您可能不会收到通知。

您可以使用诊断侦听器或创建自己的发布或发送观察者,在发布/发送之前和之后以及任何失败时都会调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM