是否有任何想法在MassTransit中实施IHealthCheck。界面IHealthCheck
是在.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制作的度量收集库。指标会告诉您您的消费者是否状况良好。但是,尽管运行状况检查是二进制的(无论是否正常),但指标是相对的。就像,如果您在几分钟的时间窗口内得到的错误数等于已消耗的消息数,那么您就有问题了。或者,关键时间(这是发送或发布消息的时间与完全处理该消息的时间之间的差)持续增加或超过某个阈值。您将需要根据可以容忍的值设置一些更全面的警报以检测那些情况。
因此,如果要进行健康检查,请考虑检查与总线使用的消息代理以及消费者使用的所有基础结构/服务的连接。对于消息代理,您可以使用本机客户端实施这些检查。
但是,MassTransit也可以完成几件事。可以将IBusObserver
实例连接到总线控件,也可以将IReceiveEndpointObserver
实例用于每个接收端点。如果总线无法启动或端点出现连接错误-您可能无法通过运行状况检查。在写这篇文章的同时,我有一些想法,下周可能会执行其中的一些检查:)
关于c# - 在MassTransit中为.Net Core 2.2实现IHealthCheck,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52911473/