【问题标题】:Is there any way to get job keys in Quartz by job name有没有办法通过作业名称在 Quartz 中获取作业密钥
【发布时间】:2017-04-27 07:30:41
【问题描述】:

现在我正在 Quartz 库中搜索通过作业名称获取作业密钥的功能。

我看到Scheduler 有方法使用GroupMatcher<JobKey> 按组名获取作业密钥,Quartz 也有NameMatcher,它可以像GroupMatcher 一样成为用户

Set<JobKey> getJobKeys(NameMatcher<JobKey> matcher) throws SchedulerException;

你知道 Quartz 库中已经存在这个功能吗?

【问题讨论】:

    标签: java quartz-scheduler


    【解决方案1】:

    AFAIK 不存在通过作业名称使用 NameMatcher 获取 JobKey 的 API。

    但是,实际上很容易通过迭代键从名称中获取作业的键:

    public JobKey findJobKey(String jobName) {
        // Check running jobs first
        for (JobExecutionContext runningJob : scheduler.getCurrentlyExecutingJobs()) {
            if (Objects.equals(jobName, runningJob.getJobDetail().getKey().getName())) {
                return runningJob.getJobDetail().getKey();
            }
        }
        // Check all jobs if not found
        for (String groupName : scheduler.getJobGroupNames()) {
            for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
                if (Objects.equals(jobName, jobKey.getName())) {
                    return jobKey;
                }
            }
        }
    }
    

    【讨论】:

    • 您可以使用 GroupMatcher.anyGroup() 跳过 scheduler.getJobGroupNames() 循环,因为无论如何您都在循环它们。
    猜你喜欢
    • 2019-02-08
    • 2021-10-26
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 2014-08-23
    • 2017-09-23
    相关资源
    最近更新 更多