java - quartz 触发器不会立即触发

标签 java quartz-scheduler

我想使用 jdbc 数据存储通过quartz调度程序立即执行该作业。然而,即使我使用 now() 进行调度或调用 triggerJob,调度和触发触发之间也有大约 20-30 秒的延迟。

我尝试使用简单的触发器来执行该作业:

JobKey key = //...
        JobDetail jobDetail = newJob(jobBean.getClass())
                .withIdentity(key)
                .usingJobData(new JobDataMap(jobParams))
                .storeDurably()
                .build();

        Trigger trigger = newTrigger()
                .withIdentity(key.getName(), key.getGroup())
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withMisfireHandlingInstructionFireNow()
                        .withRepeatCount(0))
                .build();

        scheduler.scheduleJob(jobDetail, trigger);

我还尝试使用调度程序触发:

 JobKey key = // ...
        JobDetail jobDetail = newJob(jobBean.getClass())
                .withIdentity(key)
                .storeDurably()
                .build();
        scheduler.addJob(jobDetail, true);


        scheduler.triggerJob(key, new JobDataMap(jobParams));

以下是显示延迟的监听器日志。

2019-05-15 13:59:52,066Z  INFO  [nio-8081-exec-2] c.m.f.s.logger.SchedulingListener                  : Job added: newsJobTemplate:1557928791965
2019-05-15 13:59:52,066Z  INFO  [nio-8081-exec-2] c.m.f.s.logger.SchedulingListener                  : Job scheduled: newsJobTemplate:1557928791965
2019-05-15 14:00:18,660Z  INFO  [eduler_Worker-1] c.m.f.s.logger.TriggerStateListener                : Trigger fired: QUARTZ_JOBS.newsJobTemplate:1557928791965 {}
2019-05-15 14:00:18,703Z  INFO  [eduler_Worker-1] c.m.f.s.logger.JobExecutionListener                : Job will be executed: QUARTZ_JOBS.newsJobTemplate:1557928791965
2019-05-15 14:00:19,284Z  INFO  [eduler_Worker-1] c.m.f.s.logger.JobExecutionListener                : Job was executed: QUARTZ_JOBS.newsJobTemplate:1557928791965

最佳答案

我到处都发现了一些碎屑,表明问题与交易有关。 所以我从服务方法中删除了@Transactional,瞧它起作用了。 看起来当您调用触发器时,调度程序线程会异步尝试从数据库查找调度和触发器,但当时事务尚未提交。随后调度程序线程再次查找数据库,最终找到了它。

关于java - quartz 触发器不会立即触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151880/

相关文章:

java - 在 swing 消息框中启用文本突出显示

java - 使用 sql.timestamp 检查新的一天

tomcat - 在 Grails 中制作 WAR 文件

Java 在到达循环结束之前停止且没有错误

java - 在 JavaFX 上动态更新具有多个系列的条形图

java - Spring MVC quartz : how to set the scheduler from the view or a html page

java - 使用quartz调度器调度java程序

spring - 将 Quartz Job 声明为 spring bean 是否有任何正当理由?

java - quartz 在集群配置中的奇怪行为

java - 通过父级的 id(带有 id)单击 span 按钮 - selenium with java