如何获取 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);
- 这是实现它/获取 jobKey 的正确方法吗? (是否永远只有一个jobkey在
var jobkey = jobkey.Single(...)
行?
- 如果不首先获取 所有 JobKey,真的没有办法获取 JobDetail 吗?
- 这是 Quartz 希望我们获取 JobDetail 的方式还是有更好/更简单的方式?
提前致谢
您可以只创建一个新的作业密钥(这只是作业名称和组名称的奇特存储)
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");
}
我无法理解如何使用 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);
- 这是实现它/获取 jobKey 的正确方法吗? (是否永远只有一个jobkey在
var jobkey = jobkey.Single(...)
行? - 如果不首先获取 所有 JobKey,真的没有办法获取 JobDetail 吗?
- 这是 Quartz 希望我们获取 JobDetail 的方式还是有更好/更简单的方式?
提前致谢
您可以只创建一个新的作业密钥(这只是作业名称和组名称的奇特存储)
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");
}