我很难理解如何使用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);
var jobkey = jobkey.Single(...)
行上是否只有一个作业密钥?提前致谢
答案 0 :(得分:4)
您可以创建一个新的工作密钥(这只是一个工作名称和组名的精美存储)
new JobKey("jobName", "jobGroupName");
只要您的工作名称和工作组名称与您创建工作的名称相同,您就可以获得工作细节。
var jobDetail = quartzScheduler.GetJobDetail(new JobKey("jobName", "jobGroupName"));
在个人方面,我在我的工作类中实现了一个静态方法来集中创建工作密钥,所以我没有很多地方:
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");
}