标签: quartz-scheduler

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

我需要构建一个显示某种“作业队列”的图形用户界面。

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

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

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

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

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

(我使用 spring 从 SchedulerFactoryBean 获取 Scheduler)

java quartz-scheduler

5
推荐指数
1
解决办法
9618
查看次数

Quartz调度器:JOB执行多次

我正在使用石英调度程序来安排我的工作。我用过CronTrigger。但问题是触发器会被多次触发。这是我设置 cron 调度程序的代码..

SchedulerFactory schFactory = new StdSchedulerFactory();
        Scheduler sched = null;
        CronTrigger cronTrigger = null;
        try {
            sched = schFactory.getScheduler();
            JobDetail jobDetail = new JobDetail("job1", "group1",SchedulerPBGC.class);

            String cronTimerStr = "* 16 15 * * ? *";

            LOG.warn("CRON TRIGGER FORMAT  FOR PROCESSING PB GC DATA:"+cronTimerStr);

            cronTrigger = new CronTrigger("SchedTrigger", "Group1", cronTimerStr);


            sched.scheduleJob(jobDetail, cronTrigger);          
            sched.start();

            LOG.warn("SCHEDULER REGISTERED FOR PROCESSING PB GC DATA :  TIME :"+cronTimerStr);          

        } catch (SchedulerException se) {
            LOG.error("SchedulerException Message::"+se.getLocalizedMessage());     
        }
Run Code Online (Sandbox Code Playgroud)

这里我的调度程序执行了作业 10 次...在这里你可以看到日志..

2012-06-20 15:16:50,001 DefaultQuartzScheduler_Worker-1 WARN  test.SchedulerPBGC …
Run Code Online (Sandbox Code Playgroud)

quartz-scheduler

5
推荐指数
1
解决办法
4804
查看次数

JDBC 作业存储未在 Quartz 中启动

我使用quartz来调度我的作业,当我使用RAM作业存储时,调度程序启动并成功触发,但当我使用JDBC存储时,它无法启动。你能指导一下吗,我已经放置了以下文物,

# Default Properties file for use by StdSchedulerFactory
# to create a Quartz Scheduler Instance, if a different
# properties file is not explicitly specified.
#

org.quartz.scheduler.instanceName: DefaultQuartzScheduler
org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: false

org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 2
org.quartz.threadPool.threadPriority: 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true

org.quartz.jobStore.misfireThreshold: 60000

#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate



org.quartz.jobStore.dataSource = myDS

org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.dataSource.myDS.driver = org.hsqldb.jdbc.JDBCDriver
org.quartz.dataSource.myDS.URL = jdbc:hsqldb:file:x\\myds
org.quartz.dataSource.myDS.user = SA
org.quartz.dataSource.myDS.password = sa
org.quartz.dataSource.myDS.maxConnections = 30
Run Code Online (Sandbox Code Playgroud)

这些是我的日志...

2014-01-17 11:36:42 INFO  MLog:80 - …
Run Code Online (Sandbox Code Playgroud)

quartz-scheduler

5
推荐指数
1
解决办法
4686
查看次数

如何配置石英调度程序以占用数据库中存储的作业并在服务器重启时执行?

我一直在使用石英调度程序每小时发送大量电子邮件,这工作得非常好。这个调度器被显式调用一次。当服务器在调度程序执行过程中重新启动时,就会出现问题。虽然quartz调度器在JOB_DETAILS表中创建了一条记录,但不占用服务器启动时自动执行的任务。

任何解决此问题的帮助表示赞赏。

以下是示例代码和当前配置。

SchedulerFactory factory = new StdSchedulerFactory();
    Scheduler scheduler;
    try {
        scheduler = factory.getScheduler();

        // Creating Job and link to our Job class
        JobDetailImpl jobDetail = new JobDetailImpl();
        jobDetail.setName(jobName);
        jobDetail.setJobClass(HelloJob.class);


        int repeat = totalBal/Constants.HOURLY_LIMIT;
        System.out.println("totalBal : "+totalBal+ " | "+ "repeat : "+repeat);
        // Creating schedule time with trigger
        SimpleTriggerImpl simpleTrigger = new SimpleTriggerImpl();
        simpleTrigger.setStartTime(new Date(
                System.currentTimeMillis() + 1000));
        simpleTrigger.setRepeatCount(repeat); // SimpleTrigger.REPEAT_INDEFINITELY
        //simpleTrigger.setRepeatInterval(3600000);
        simpleTrigger.setRepeatInterval(5000);
        simpleTrigger.setName(jobName);

        // Start scheduler
        System.out.println("Scheduler Started");
        scheduler.start();
        scheduler.getContext().put("externalInstance", cmpgId);
        scheduler.scheduleJob(jobDetail, simpleTrigger);

    } catch (SchedulerException e) …
Run Code Online (Sandbox Code Playgroud)

java mysql jdbc quartz-scheduler

5
推荐指数
1
解决办法
6815
查看次数

石英集群调度程序死锁

在 6 个实例上运行石英集群调度程序时,我们随机得到以下异常:

无法获取下一个触发器:尝试获取锁时发现死锁;尝试重新启动事务

这是我们的quartzConfig.properties

    scheduler.skipUpdateCheck = true
    scheduler.instanceName = 'quartzScheduler'
    scheduler.instanceId = 'AUTO'
    threadPool.threadCount = 13
    threadPool.threadPriority = 5
    jobStore.misfireThreshold = 300000
    jobStore.'class' = 'org.quartz.impl.jdbcjobstore.JobStoreTX'
    jobStore.driverDelegateClass = 'org.quartz.impl.jdbcjobstore.StdJDBCDelegate'
    jobStore.useProperties = true
    jobStore.dataSource = 'myDS'
    jobStore.tablePrefix = 'QRTZ_'
    jobStore.isClustered = true
    jobStore.clusterCheckinInterval = 10000
    dataSource.myDS.driver='com.mysql.jdbc.Driver'
    dataSource.myDS.maxConnections = 15
Run Code Online (Sandbox Code Playgroud)

我们在mysql db的应用程序中使用quartz grails插件(带有quartz 2.2.1)。

mysql quartz-scheduler

5
推荐指数
0
解决办法
807
查看次数

*/5 和 0/5 之间的 Cron 表达式差异

我有一个 cron 属性文件,其中一些属性包含如下表达式:

"* 0/5 * * * ?"
Run Code Online (Sandbox Code Playgroud)

其中一些包含:

"* */5 * * * ?"
Run Code Online (Sandbox Code Playgroud)

两者有什么区别?

如果我想每 5 分钟运行一次,那么应该使用哪一个?

谢谢

PS:我的项目正在使用 spring 调度程序。

quartz-scheduler

5
推荐指数
1
解决办法
9525
查看次数

为石英线程池设置线程数

我已经创建了文件quartz.properties并将其放在类路径中。属性是

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1
Run Code Online (Sandbox Code Playgroud)

但是当我启动应用程序时,我收到此消息

Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
Run Code Online (Sandbox Code Playgroud)

它是否加载属性?无论如何,我只为调度程序运行一个线程......

spring quartz-scheduler

5
推荐指数
1
解决办法
8453
查看次数

QUARTZ :不支持星期几和月份参数

我正在使用cron-utils库进行调度。当我同时提供 DoM 和 DoW 时,我得到以下异常

不支持星期几和月份参数。

我发现这个异常符合 QUARTZ 规范。
我想知道为什么不支持?因为它似乎是在“ 9 月 5 日仅在星期日”运行类似的有效要求
我是否需要编写两个单独的表达式并取其交集?
这个问题的推荐解决方案是什么?

cron quartz-scheduler

5
推荐指数
0
解决办法
1436
查看次数

Java Spring 调度程序锁

我一直在尝试向我的客户发送通知。我正在使用 kubernetes 并且我创建了多个 Spring Boot 应用程序,因为我有 2 个副本。这一切都很好,但是当调度程序运行时,他们每个人都可以发送通知。我看过一点点石英,但配置似乎有点复杂。有没有简单的方法来做到这一点?

@Scheduled(fixedDelayString = "300000")
public void sendFlowerNotification() {
  //Code
}
Run Code Online (Sandbox Code Playgroud)

java spring scheduler quartz-scheduler

5
推荐指数
1
解决办法
7401
查看次数

spring boot 项目中排除依赖的问题

如果我想用 maven 包构建我的项目,我会收到 maven 的警告:在构建有效模型时遇到了一些问题

ch.mobi.ama:logcollector:jar:1.0.0-SNAPSHOT [警告] 'dependencyManagement.dependencies.dependency.exclusions.exclusion.artifactId' for org.quartz-scheduler:quartz:jar 与值 '*' 不匹配有效的 ID 模式。@ org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE, c:\ieu.m2\repository\org\springframework\boot\spring-boot-dependencies\2.1.6.RELEASE\spring-boot- dependencies-2.1.6.RELEASE.pom,第 2619 行,第 25 列

我尝试过旧的 Spring Boot 版本。2.1.5 版也有同样的问题。2.1.4 没有警告。在指定文件 spring-boot-dependencies-2.1.6.RELEASE.pom 的第 2619 行实际上有如下代码

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>${quartz.version}</version>
    <exclusions>
        <exclusion>
            <artifactId>c3p0</artifactId>
            <groupId>com.mchange</groupId>
        </exclusion>
        <exclusion>
            <artifactId>*</artifactId>
            <groupId>com.zaxxer</groupId>
        </exclusion>
    </exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)

由于给定的代码来自Spring Boot,我无法影响它,有一种不好的感觉。我的项目会被正确构建吗?我必须回到 2.1.4 版吗?我是否必须报告 Spring Boot 的问题?我能做什么?

quartz-scheduler dependency-management parent-pom spring-boot-starter

5
推荐指数
1
解决办法
3256
查看次数