agilelabs-fx-docs main tasks/run-jobs.md

运行 Job 与后台任务

本页面向需要处理 BackgroundService、Hangfire Job、异步任务和消息消费的人,重点回答 Scope、WorkContext、鉴权边界和真实项目组织方式。

我现在要解决什么

  • 后台任务如何创建自己的 WorkContext。
  • Hangfire Job 用框架内置激活器还是项目自定义激活器。
  • Dashboard 如何做鉴权。
  • 定时任务和消息消费里如何保留上下文边界。

先看哪几页

  1. WorkContext
  2. Hangfire 中使用 WorkContext
  3. Task.Run 与新线程中使用 WorkContext
  4. 日志与诊断

最短落地路径

  • 非 HTTP 线程先建立 WorkContext,再解析 Scoped 服务。
  • Hangfire Job 优先使用框架 WorkContextJobActivator,自定义激活器也必须创建并释放 IWorkContextScope
  • Task.Run、线程池和 BackgroundService 内部逻辑优先使用 CreateScopeWithWorkContextForNewTask()

示例与落地对照

  • niusys-webapi:Hangfire Dashboard 与 Server 组合。
  • gmandarin-backend:自定义 Hangfire JobActivator。
  • woscmBackgroundService + 嵌套 CreateScopeWithWorkContext()

相关主题