c# - 在 MassTransit 中为 .Net Core 2.2 实现 IHealthCheck

标签 c# .net-core rabbitmq masstransit kubernetes-health-check

是否有在 MassTransit 中实现 IHealthCheck 的想法。健康检查接口(interface) 在 .net Core 2.2 Preview 3 中引入 ( ASP.NET Core 2.2.0-preview3 now available )

最佳答案

健康检查旨在通过定期控制所有必需的下游组件(例如数据库、消息代理、缓存提供程序和我们的服务所依赖的其他服务)来确保服务健康。这就是 Microsoft 默认包含 SQL Server 或 URL 调用等运行状况检查的原因。

MassTransit 不是基础设施,它是一个消息传递中间件库。您可能感兴趣的是指标。 MassTransit 有一些指标收集库,例如包含在主存储库中的 Application Insight 指标收集库,或者我为 AppMetrics 和 Prometheus 制作的指标收集库。指标可以告诉您消费者的表现是否良好。但是,虽然健康检查是二元的(健康与否),但指标是相对的。例如,如果您在几分钟的时间窗口内得到的错误数量等于消耗的消息数量,那么您就有问题了。或者,临界时间(发送或发布消息的时间与完全处理消息的时间之间的差)不断增加或超过某个阈值。您需要根据您可以容忍的值设置一些更全面的警报来检测这些情况。

因此,如果您想要进行运行状况检查 - 请考虑检查与您的总线使用的消息代理以及您的消费者使用的所有基础设施/服务的连接。对于消息代理,您可以使用 native 客户端来实现这些检查。

但是,MassTransit 也可以完成一些事情。可以将 IBusObserver 实例连接到总线控件,并且还可以为每个接收端点使用 IReceiveEndpointObserver 实例。如果总线无法启动或端点出现连接错误 - 您可能无法通过运行状况检查。在写这篇文章时,我得到了一些想法,并可能在下周实现其中一些检查:)

关于c# - 在 MassTransit 中为 .Net Core 2.2 实现 IHealthCheck,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52911473/

相关文章:

java - 我如何使用 Java 在 RabbitMQ 中实现 Headers Exchange?

c# - 将字符串作为多个参数传递?

spring - 使用 RabbitTemplate 或 AmqpTemplate 哪一个?

c# - 客户端的互联网速度慢怎么会成为 asp.net 中服务器超时异常的原因?

c# - System.Net.HttpClient : SendAsync failed with OperationCanceledException without http request throught network

asp.net-core - 如何设置 Application Insights for .NET Core 的 cloud_roleName?

c# - 为什么 .NET Core 的模型验证器在验证消息上显示模型属性的名称而不是 JSON 字段名称?

c# - 如何在 MassTransit 和 Automatonymous 中配置 EF Core 持久性?

c# - 如何测试 3rd 方 API。我应该创建单元测试还是集成测试?

c# - JSON.NET 忽略集合类型对象上的 ISerializable