繁体   English   中英

如何获取注册到 Quartz 调度器的触发器列表

[英]how get a list of Triggers registered to a Quartz scheduler

我需要构建一个显示某种“作业队列”的 gui。

我动态创建触发器并使用jobScheduler.scheduleJob(trigger);安排它们jobScheduler.scheduleJob(trigger); . 我还通过触发器的 dataMap 传递了一些数据。

如何取回尚未触发的触发器列表?

我找到了一种获取当前正在运行的作业的方法,但无法获取已注册触发器的列表。

我应该自己维护这个列表并在它完成执行时通过实现触发器侦听器删除内容吗?

我可以获取底层 JobStore 并调用 getTriggerNames() 或类似方法吗? 但是我怎样才能得到 JobStore。 我所拥有的只是一个 Scheduler 实例(实际上是一个 StdScheduler),似乎无法从中获取 JobStore 实例。

(我使用 spring 从 SchedulerFactoryBean 获取调度程序)

好吧,我只是累了。

一个在调度程序的方法getTriggerNames()。 所以它解决了我的问题。

如果您不知道工作或组名,请使用现代 Quartz(以及一些不必要的 Spring DSL):

@Autowired
private Scheduler scheduler;

public void x() {
    scheduler.getTriggerKeys(GroupMatcher.anyGroup()).stream()...;
    // like
    scheduler.getTriggerKeys(GroupMatcher.anyGroup()).stream()
            .filter(__ -> {
                try {
                    return "YYY".equals(scheduler.getTrigger(__)
                            .getJobDataMap().getString("myParam"));
                } catch (SchedulerException e) { return false; }
            });
    // or like
    scheduler.getTriggerKeys(GroupMatcher.anyGroup()).stream()
            .filter(__ -> "YYY".equals(__.getName()));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM