java - 有什么方法可以通过作业名称在 Quartz 中获取作业 key

标签 java quartz-scheduler

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

我看到了 Scheduler有方法使用 GroupMatcher<JobKey> 按组名获取作业键还有QuartzNameMatcher可以使用与 GroupMatcher 相同的方式使用

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

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

最佳答案

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

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

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;
            }
        }
    }
}

关于java - 有什么方法可以通过作业名称在 Quartz 中获取作业 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43651304/

相关文章:

java - GlassFish 上 Quartz 计划的 JSR-352 作业无法启动

java - 同时从两个不同线程插入/更新实体

java - 使用 PIT 查找无用的单元测试

java - 获取文件的最后访问时间

java - 场景生成器没有重新规划我的 Controller 类

java - 停止从quartz调度程序中删除作业

java - Hazelcast 预定作业(支持 Quartz?)

java - 防止由特定触发器触发的实例的并发执行

java - 使用 Ant 的 Jacoco 覆盖和报告任务

java - 我应该在 Servlet 的 destroy() 方法中关闭调度程序吗?