Quartz 作业模板

本页面旨在将文档中各处列出的多种常见建议汇总到一页,以便于轻松参考。

public class SampleJob : IJob
{
    // 公开一个键,便于在DI配置中引用,例如
    // 组有助于在维护操作中定位特定的作业,
    // 比如暂停"group integration"中的所有作业
    public static readonly JobKey Key = new JobKey("sample-job", "examples");

    public async Task Execute(IJobExecutionContext context)
    {
        if (context.RefireCount > 10)
        {
            // 我们可能永远无法成功!
            // 也许记录一个警告,抛出另一种类型的错误,通知值班工程师
            return;
        }

        try
        {
            // 从MergedJobDataMap获取数据
            var value = context.MergedJobDataMap.GetString("some-value");

            // ... 执行工作
            await Task.Delay(100);
        }
        catch (Exception ex)
        {
            // 您希望作业重新触发吗?
            throw new JobExecutionException(msg: "", refireImmediately: true, cause: ex);
        }
    }
}
在本文档中