简体   繁体   English

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

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

I need to build a gui showing some kind of 'job queue'.我需要构建一个显示某种“作业队列”的 gui。

I create triggers dynamically and schedule them with jobScheduler.scheduleJob(trigger);我动态创建触发器并使用jobScheduler.scheduleJob(trigger);安排它们jobScheduler.scheduleJob(trigger); . . I pass also some data via the trigger's dataMap.我还通过触发器的 dataMap 传递了一些数据。

How can I get back the list of triggers which didn't yet fire?如何取回尚未触发的触发器列表?

I found a way to get the currently running jobs, but no way to get the list of registered trigger.我找到了一种获取当前正在运行的作业的方法,但无法获取已注册触发器的列表。

Should I maintain this list by myself and remove stuff when it finished executing by implementing a trigger listener?我应该自己维护这个列表并在它完成执行时通过实现触发器侦听器删除内容吗?

Can I get the underlying JobStore and invoke getTriggerNames() or similar?我可以获取底层 JobStore 并调用 getTriggerNames() 或类似方法吗? But how can I get the JobStore.但是我怎样才能得到 JobStore。 All I have is a Scheduler instance (actualy a StdScheduler), and there seems no way to get a JobStore instance from it.我所拥有的只是一个 Scheduler 实例(实际上是一个 StdScheduler),似乎无法从中获取 JobStore 实例。

(I use spring to get the Scheduler from a SchedulerFactoryBean) (我使用 spring 从 SchedulerFactoryBean 获取调度程序)

Ok, I'm just tired.好吧,我只是累了。

There is a method getTriggerNames() in the Scheduler.一个在调度程序的方法getTriggerNames()。 So it solves my problem.所以它解决了我的问题。

With modern Quartz (and a bit of unnecessary Spring DSL) if you don't know job or group name:如果您不知道工作或组名,请使用现代 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