Java 无法获取Quartz计划程序中的作业列表
我正在尝试获取在Quartz计划程序中为特定组注册的所有作业。这是我的一段代码Java 无法获取Quartz计划程序中的作业列表,java,quartz-scheduler,Java,Quartz Scheduler,我正在尝试获取在Quartz计划程序中为特定组注册的所有作业。这是我的一段代码 CustomSchdularFactory.getSchedulerInstance().getJobKeys(groupEquals(group)); 这里的group是一个字符串变量,其中包含我要获取其关联作业的组的名称。 在使用上述代码时,我遇到了以下错误 The method getJobKeys(GroupMatcher<JobKey>) in the type Scheduler is no
CustomSchdularFactory.getSchedulerInstance().getJobKeys(groupEquals(group));
这里的group
是一个字符串变量,其中包含我要获取其关联作业的组的名称。
在使用上述代码时,我遇到了以下错误
The method getJobKeys(GroupMatcher<JobKey>) in the type Scheduler is not applicable for the arguments (GroupMatcher<Key<Key<T>>>)
类型计划程序中的方法getJobKeys(GroupMatcher)不适用于参数(GroupMatcher)
我不知道为什么会发生这个错误,因为我从石英的官方文件中获取了参考资料
使用jobGroupEquals而不是groupEquals
CustomSchdularFactory.getSchedulerInstance().getJobKeys(jobGroupEquals(group));
它会对你有用。使用它
Scheduler sched = new StdSchedulerFactory().getScheduler();
for(String group: sched.getJobGroupNames()) {
for(JobKey jobKey : sched.getJobKeys(GroupMatcher.jobGroupEquals(group))) {
...
}
}
在Quartz.NET 3.0上,我能够在异步模式下工作:
public static async Task RunTask() {
StdSchedulerFactory factory = new StdSchedulerFactory(System.Configuration.ConfigurationManager.AppSettings);
IScheduler scheduler = await factory.GetScheduler();
await scheduler.Start();
IReadOnlyCollection<string> jgn = await sch.GetJobGroupNames(new System.Threading.CancellationToken());
foreach (string jno in jgn)
{
IReadOnlyCollection <JobKey> jk = await sch.GetJobKeys(jobGroupEquals(jno));
foreach (JobKey j in jk)
{
var currentJob = await sch.GetJobDetail(j);
//print the properties of the current job
Console.WriteLine(currentJob.Key.Name);
Console.WriteLine(currentJob.Description);
}
}
}
private static GroupMatcher<JobKey> jobGroupEquals(string jno)
{
return GroupMatcher<JobKey>.GroupEquals(jno);
}
公共静态异步任务RunTask(){
StdSchedulerFactory=新的StdSchedulerFactory(System.Configuration.ConfigurationManager.AppSettings);
isScheduler scheduler=wait factory.GetScheduler();
wait scheduler.Start();
IReadOnlyCollection jgn=await sch.GetJobGroupNames(新System.Threading.CancellationToken());
foreach(jgn中的字符串jno)
{
IReadOnlyCollection jk=wait sch.GetJobKeys(jobGroupEquals(jno));
foreach(jk中的作业键j)
{
var currentJob=wait sch.GetJobDetail(j);
//打印当前作业的属性
Console.WriteLine(currentJob.Key.Name);
Console.WriteLine(currentJob.Description);
}
}
}
私有静态GroupMatcher jobGroupEquals(字符串jno)
{
返回GroupMatcher.GroupEquals(jno);
}
两年后,他们的文档(在烹饪手册部分)仍然是错误的。公认的答案是正确的。其他人只是引用了食谱中不正确的例子。也许这在Quartz 2.2.x中有效,但在Quartz 2.1.x中却不起作用。错误的食谱示例在Quartz 2.1.x部分。@JimTough为了完整性起见,这个特定的问题似乎已经在2.1中引入,其中GroupMatcher代码被彻底修改。同样的代码仍然存在于2.2中,因此它将导致相同的问题。顺便说一句,当你否决投票时,留下一个简短的提示总是更好的,我不是故意在这里放虚假信息的,我只是当时还在使用Quartz 2.0。。。