我对Quartz有点陌生。是否有方法更新已提交的Quartz作业的作业执行间隔?此间隔是否立即更新?重新调度后是否必须再次启动作业?
我找到了下面的链接,但我不知道代码引用的是哪个库,因为我的quartz jars不包含链接中使用的一些类。另外,triggerKey方法从何而来?这是某种静态导入吗?
http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/cookbook/UpdateTrigger.html
我想在一个JUnit测试用例中将作业执行间隔更新为一个非常大的数值,因为我不想让作业干扰被测类的状态。一旦测试用例完成,我想将作业执行间隔重置为将在生产中使用的实际值
3条答案
按热度按时间yquaqz181#
您必须通过创建新触发器来重新计划作业。
这将用新的触发器触发时间替换相同的作业。
t8e9dugd2#
让我扩展一下Kris和Alex Mi的答案。
下面是一个启动cron作业的多示例Sping Boot 应用程序的示例。
作业只能在其中一个示例上运行。
每个示例的配置必须相同。
如果作业崩溃,则应尝试重新启动3次,延迟5分钟 * 重新启动尝试次数。
如果作业在3次重启后仍然崩溃,则应该设置作业触发器的默认cron。
我们将在集群模式下使用Quartz:
Deps:
以下是Quartz配置(更多信息here):
将侦听器添加到调度程序:
现在最重要的-处理我们的工作与监听器的执行逻辑:
最后但并非最不重要:application.yaml
Here数据库官方脚本(使用liquibase或flyway)
更多信息:
About quartz
spring boot using quartz in cluster mode
One more article
Cluster effectively quartz
zysjyyx43#
也许Quartz库中有一个静态方法triggerKey()。然而,我设法重新安排了一个现有的Quartz作业(使用Quartz 2.3.2),而没有使用这个(潜在的)方法,而是使用TriggerKey类,如下所示: