For the complete documentation index, see llms.txt. This page is also available as Markdown.

Zongsoft.Scheduling

以框架 Hangfire 样例串联调度契约、处理器和宿主生命周期。

调度把“什么时候执行”与“执行什么”分开。核心类库 提供调度公共契约,具体实现决定延迟、周期、持久化和失败处理方式。Discussions 没有现成调度业务,本页沿用框架的 MyHandler 范例。

从处理器开始

来源:framework/externals/hangfire/samples/MyHandler.cs(节选;上下文见源文件)。

MyHandler.cs
public class MyHandler : HandlerBase<object>
{
	private long _count = 0;

	protected override ValueTask OnHandleAsync(object argument, Parameters parameters, CancellationToken cancellation) =>
		Logging.GetLogging(this).DebugAsync(
			"MyHandler handles the scheduling of the Hangfire.",
			new
			{
				Count = Interlocked.Increment(ref _count),
				Argument = argument,
				Parameters = parameters,
			},
			cancellation);
}

处理器接收业务参数、扩展 Parameters 和取消令牌。异步接口不意味着当前工作一定耗时或需要后台线程;这里主要是日志写入。

挂到调度器可发现的位置

来源:framework/externals/hangfire/samples/Zongsoft.Externals.Hangfire.Samples.plugin(节选;上下文见源文件)。

调度作业通过稳定名称关联处理器。重命名类型、处理器名或移动插件时,要考虑存储中已存在作业的引用,否则部署成功后旧作业仍可能无法执行。

调度方式与资源

方式
应核对的内容

延迟执行

时间基准、取消、到期时宿主是否运行

周期执行

cron 语法、时区、错过触发时的策略

持久作业

存储可用性、重启恢复、参数兼容性

多实例执行

分配机制、重复执行与幂等

具体能力以实现为准。Hangfire 集成及存储插件见项目说明,不能把 核心类库 契约理解为自动具备全部持久化能力。

验证与停止

先构建并部署真实样例,再通过所选调度器注册 MyHandler,确认日志包含 Count、Argument 与 Parameters。这个计数在重启后归零,多 Worker 之间不共享;它不是作业完成的持久凭据。

停止时应停止新调度、处理取消并释放服务资源。失败作业可能重试,样例之外的业务动作需要自己的幂等与补偿策略。有关后台宿主见daemon。

最后更新于