java - quartz 调度程序 : How to Group Jobs together?

标签 java quartz-scheduler scheduling

我想问是否有人对 Quartz 调度程序有同样的问题。我使用触发器和 JobKeys 创建了作业,并在其中设置了组名。但是当我打印出已设置的组时,它始终是默认的。

如何设置此组名才能最终将作业分组在一起,最重要的是仅取消指定的组?使用类似这样的代码:

public void unscheduleByGroupname(String groupName) throws SchedulerException {
    for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
        scheduler.unscheduleJob(new TriggerKey(jobKey.getName(), jobKey.getGroup()));
    }
}

输入:

    TriggerKey tKey = new TriggerKey("Trigger:" + jobName + "-Somename:" + object.toString(),
            "Group:" + jobName + "-Somename:" + object.toString());
    JobKey jKey = new JobKey("Job:" + jobName + "-Somename:" + object.toString(),
            "Group:" + jobName + "-Somename:" + object.toString());
    JobDetail job = JobBuilder.newJob(Somename.class).withDescription("Somename")
            .withIdentity(jKey).build();
    Trigger trigger = TriggerBuilder.newTrigger().forJob(jKey).startAt(new Date()).withIdentity(tKey).build();

输出函数:

for (String groupName : scheduler.getJobGroupNames()) {
        for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {

            String jobName = jobKey.getName();
            String jobGroup = jobKey.getGroup();

            // get job's trigger
            List<Trigger> triggers = (List<Trigger>) scheduler.getTriggersOfJob(jobKey);
            Date nextFireTime = triggers.get(0).getNextFireTime();
            System.out.println("[jobName] : " + jobName + " [groupName] : " + jobGroup + " - " + nextFireTime);}

输出:

[jobName] : Job:-Somename:13 [groupName] : DEFAULT - Tue Jul 19 13:48:40 CEST 2016
[jobName] : Job:-Somename:14 [groupName] : DEFAULT - Tue Jul 19 13:49:11 CEST 2016
[jobName] : Job:-Somename:15 [groupName] : DEFAULT - Tue Jul 19 13:49:41 CEST 2016
[jobName] : Job:-Somename:16 [groupName] : DEFAULT - Tue Jul 19 13:50:11 CEST 2016

最佳答案

当您查看职位身份时,您可以添加群组信息。我链接了如下所示的方法,它对我有用(我可以看到该组是我设置的所需名称):

JobDetail job = JobBuilder.newJob(ScheduledJob.class)
            .withIdentity("JOB KEY", "GROUP NAME")
            .withDescription("Job description")
            .usingJobData(dataMap)
            .build();

关于java - quartz 调度程序 : How to Group Jobs together?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38457913/

相关文章:

java - quartz 触发器开始时间早于当前时间

algorithm - 生成双人游戏时间表

java - DispatcherServlet 未将我的请求转发给 Controller

java - 在struts的forward标签中添加点是什么意思?

java - JSP中如何缩短URL地址

java - 使用时从随机中删除数组

java - quartz 固定次数

java - 每 X 秒触发一次对应的 Cron 表达式是什么,其中 X > 60?

java - quartz 异常处理

android - 在 Android 中使用服务在 Android 中安排电子邮件/在 Android 中在后台发送电子邮件