SuperAPI AI 工具集

background-jobs

通用与其它

查看项目

更新于 10-16 06:51

技能介绍

用途:在 ASP.NET Core 中实现后台任务,如异步发邮件、定时清理/报表/同步、失败重试与指数退避、队列消费,以及把工作从请求线程卸载以降低响应延迟。

主要能力:提供选型决策——进程内长驻消费者用 BackgroundService;进程内生产者-消费者用 BackgroundService + Channel<T>;需持久化、重试、仪表盘用 Hangfire;复杂 cron 与集群调度用 Quartz.NET;跨服务队列用 MassTransit/RabbitMQ/Service Bus。给出四种模式的示例:BackgroundService 用 PeriodicTimer 与 IServiceScopeFactory.CreateAsyncScope() 获取 scoped 依赖;Channel<T> 用 CreateBounded 限制内存;Hangfire 支持 fire-and-forget、延迟、RecurringJob、Continuation 与 AutomaticRetry;Quartz.NET 用 AddQuartz 与 cron 触发器。

用法要点:BackgroundService 是 Singleton,不能直接注入 DbContext 等 scoped 服务;循环需 try/catch 并响应 CancellationToken;Hangfire 需安装 Hangfire.AspNetCore 与存储包(如 Hangfire.SqlServer),仪表盘须加授权过滤器;Quartz 需 Quartz.Extensions.Hosting。

限制与反模式:内存队列在重启或崩溃时丢失,关键任务需持久化队列;未处理异常会终止服务;避免 Thread.Sleep、同步 I/O、无 checkpoint 的超长任务、多服务器重复执行 recurring job,以及未鉴权的 Hangfire 仪表盘。性能上建议有界 Channel、按负载调整 worker 数、批量处理与队列优先级。资料未提供具体收费与价格信息。