当前位置: 首页 > 知识库问答 >
问题:

Quartz调度器Cron触发器

公冶高峯
2023-03-14

我想知道是否有一个函数/方法来创建随机时间触发的作业。我的意思是,如果我设置一个cron计划在每周一上午10:00触发,并给出一个时间间隔,比方说30分钟,触发器将总是在9:30到10:30之间关闭。例如,这是cron调度表。

schedule.setCronSchedule("0 0 10 ? * MON");
trigger = newTrigger()
                        .withIdentity(triggerId)
                        .startNow() // <~~~~~~~~~~~~~~~ ???
                        .withDescription(schedule.getCronSchedule())
                        .withSchedule(cronSchedule(schedule.getCronSchedule())).build();

共有1个答案

慕烨烁
2023-03-14

要在每天凌晨1点到1点30分之间的某个时间启动时间表,您可以尝试以下方法:

schedule.setCronSchedule(String.format("0 %d 1am * * ?", random.nextInt(30)));

不幸的是,Quartz甚至unix cron中都没有内置任何东西。从现在开始,随机性每天都是一样的,除非你定期重置时间表。但也许这对你的情况来说不是问题。

 类似资料:
  • 我有一个应用程序,使用Quartz作为作业调度程序。有两种情况 null > 应用程序的两个实例都将启动并连接到数据库。两者都报告它们已成功群集并连接到数据库。 当我根据场景1调度作业时,在作业执行时,只有一个应用程序执行作业。 场景2,即每10秒执行一次的cron作业,由两个应用程序同时执行。 任何帮助或指导将非常感谢!

  • 我希望它们按以下顺序运行:job3、job4、job1、job2 在20次运行中,只有大约3次我得到了预期的结果。对于其他任务,要运行的第一个任务几乎是随机的,其余任务的顺序是正确的。一次运行如下:job1,job3,job4,job2或job4,job3,job1,job2 我是不是没有正确理解Quartz中的优先级是如何工作的?我找不到到底发生了什么。

  • 我使用CalendarTriggerImpl每3天触发我的作业。我的开始时间是2012-12-10 15:00:00,结束时间是2013-12-10。但是当我在2012-12-11 11:00:00执行我的计划程序时,作业会执行。如何解决这个问题。我没有使用cron触发器,因为它会在每个月重置。所以请帮助我在2012-12-10 15:00:00、2012-12-13 15:00:00、2012-

  • 问题内容: 假设我有一个类似 测试此bean实际上将在其指定日期( 即 最接近每月15日的工作日)触发的最佳方法是什么? 更新 :这应该是一个单元测试,所以我不会启动虚拟机或更改系统时间。 问题答案: 首先,没有必要进行自我测试。它是spring框架的一部分,已经过测试。 更好的测试可能是测试您的cron表达式是否符合您的期望。这里的一种选择是使用Quartz的类。给定一个对象,您可以调用,该表达