【问题标题】:how to detect connection issues to rabbit mq using mass transit?如何使用公共交通检测到 rabbit mq 的连接问题?
【发布时间】:2020-08-10 13:24:00
【问题描述】:

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

【问题讨论】:

  • 嘿!我们可以查看任何代码/堆栈跟踪吗?它可能有助于描述您尝试过的内容、所做的研究以及您对技术的理解,以便我们能够达成一致

标签: c# rabbitmq masstransit


【解决方案1】:

如果您使用 .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 仅监控总线本身及其所有接收端点,因此当您的服务未能发布消息时,您可能不会收到通知。

您可以使用diagnostics listener 或创建自己的发布或发送observer,在发布/发送之前和之后以及在任何失败时调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2012-08-19
    • 2011-01-02
    相关资源
    最近更新 更多