问题与标题上的要求相同。对数据库操作,查询,命令和事件存储执行检查很简单,但是我对如何对托管服务执行运行状况检查的最佳方式一无所知。有人可以建议吗?
答案 0 :(得分:1)
IHostedService
接口(和BackgroundService
基本实现)具有可重载的方法StartAsync()
和StopAsync()
。
在我们的后台服务中,我们有:
public override Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogWarning("Background service stopping");
return Task.CompletedTask;
}
您可以使用它来运行HostedService
启动或停止时要通过某种方式通知的任何内容。
如果需要一种轮询服务的方法,则可以注入其中具有简单状态(由这些方法设置)的单例。然后,您的API /网站上的运行状况检查控制器也可以注入该状态并读取单例的状态。像这样:
public interface IHostedServiceStatus
{
bool IsHostedServiceRunning { get; set; }
}
public class HostedServiceStatus : IHostedServiceStatus
{
public bool IsHostedServiceRunning { get; set; }
}
将其设置为单例,注入到HostedService
中,并在IsHostedServiceRunning
和StartAsync()
方法上分别设置StopAsync()
。
然后还将您的健康检查控制器注入并读取IsHostedServiceRunning
。
答案 1 :(得分:0)
另外official Microsoft documentation还是Simon B撰写的完整指南,用于为托管服务编写运行状况检查结构。
您需要3个元素: