如何获取 Quartz Job 的 JobKey / JobDetail

How to get JobKey / JobDetail of Quartz Job

我无法理解如何使用 Quartz 2.3.2 版获取作业的详细信息。

到目前为止,我们使用 Quartz v1。0.x 工作,我必须将它升级到最新版本。

这是我们过去获取工作详细信息的方式:

JobDetail job = scheduler.GetJobDetail(task.Name, groupName);

在 2.3.2 版本中,方法 GetJobDetail() 不再有接受 2 个参数的构造函数...相反,它接受 JobKey 参数。

不幸的是,我找不到获得单个 JobKey 的方法。 我尝试的是以下内容:

string groupName = !string.IsNullOrEmpty(task.GroupNameExtension) ? task.GroupNameExtension : task.GroupName;
var jobkeys = quartzScheduler.GetJobKeys(GroupMatcher<JobKey>.GroupContains(groupName));
var jobkey = jobkeys.Single(x => x.Name == task.Name);
var jobDetail = quartzScheduler.GetJobDetail(jobkey);

提前致谢

您可以只创建一个新的作业密钥(这只是作业名称和组名称的奇特存储)

new JobKey("jobName", "jobGroupName");

只要您的职位名称和职位组名称与您创建职位的名称相同,您就可以获得职位详情。

var jobDetail = quartzScheduler.GetJobDetail(new JobKey("jobName", "jobGroupName"));

就我个人而言,我在我的工作中实现了一个静态方法 class 来集中创建工作密钥,所以我没有太多乱七八糟的东西:

public static JobKey GetJobKey(EntityServer server)
{
    return new JobKey("AutoRestart" + server.Id, "AutoRestart");
}

请注意,对于 triggerKey 也是如此

public static TriggerKey GetTriggerKey(EntityServer server)
{
    return new TriggerKey("AutoRestart" + server.Id, "AutoRestart");
}