.NET 6中HangFire Windows Service的Worker类是否需编写逻辑?
关于.NET 6中HangFire Worker Service的ExecuteAsync方法疑问解答
不需要在HangFireWorker的ExecuteAsync方法里编写额外业务逻辑,原因如下:
- HangFire Server本身是通过依赖注入(比如
AddHangfireServer)注册的独立托管服务,它的任务调度、队列处理逻辑已经由HangFire框架内部维护好了,不需要你在Worker的执行方法里干预。 - 你当前的配置是正确的:已经通过SQL Server存储任务数据,配置了定时任务,且HangFire Server能被API的仪表板识别,说明任务处理的核心机制已经正常运行。
不过有个小优化建议:虽然当前返回空任务能运行,但为了避免Worker Service因ExecuteAsync方法执行完成而意外停止,最好在方法里添加一个无限延迟的等待逻辑,保证服务持续运行直到收到停止信号:
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { await Task.Delay(Timeout.Infinite, stoppingToken); }
你的架构设计(API发任务、独立Windows Service作为HangFire Server处理任务)是合理的,后续只需要关注任务的定义和队列配置即可。
内容的提问来源于stack exchange,提问作者Franky
相关产品推荐
相关产品推荐

