簡體   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