当前位置: 首页 > 面试题库 >

如何在Quartz中重新安排作业执行间隔?

阴飞星
2023-03-14
问题内容

我对Quartz有点陌生。有没有一种方法可以更新已经提交的Quartz作业的作业执行间隔?这个间隔会立即更新吗?重新安排工作后,您是否必须再次开始工作?

我找到了以下链接,但由于我的石英罐不包含该链接中使用的某些类,因此我不知道代码所引用的库。另外,triggerKey方法从何而来?这是静态导入吗?

http://www.quartz-
scheduler.org/documentation/2.4.0-SNAPSHOT/cookbook/UpdateTrigger.html

我想在一个JUnit测试用例中将作业执行间隔更新为一个非常大的数目,因为我不希望该作业干扰被测类的状态。测试用例完成后,我想将作业执行间隔重置为将在生产中使用的实际值


问题答案:

您必须通过创建新触发器来重新计划作业。

public void execute(JobExecutionContext context) throws JobExecutionException {
    Trigger newTrigger = what_ever_you_want;
    Trigger oldTrigger = context.getTrigger();
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
    scheduler.rescheduleJob(oldTrigger.getKey(), newTrigger);
}

这将用新的触发器启动时间替换同一作业。



 类似资料:
  • 我希望在我的一个JUnit测试用例中将作业执行间隔更新为一个非常大的数字,因为我不希望作业干扰被测试类的状态。一旦测试用例完成,我希望将作业执行间隔重置为将在生产中使用的实际值

  • 我使用Quartz1.5.2和Spring3.2.1来做调度器任务,在我的应用程序中,我需要在某个时候重新安排任务,但我发现每次重新安排任务时,它都会在第一次执行两次。 下面是我的Quartz+Spring配置文件: 我把它作为一个web应用程序,下面是web.xml的代码:

  • 如何将CronTimer迭代器设置为1?或者如何停止排定程序多次执行作业。 有什么建议吗?谢谢,古扬·沙阿。

  • 问题内容: 我有一个Java程序,每20秒从Spring Qquartz执行一次。有时只需几秒钟即可执行,但是随着数据变大,我确信它会运行20秒或更长时间。 在一个实例仍在执行时,如何防止Quartz触发/触发作业?发射2个在数据库上执行相同操作的作业效果不佳。有没有办法可以进行某种同步? 问题答案: 如果您需要做的是每20秒发射一次,则Quartz严重过度使用。对于这项工作,应该足够了。 的还提

  • 我正在尝试使用Quartz来调度运行在GlassFish上的web应用程序中的作业。我在用RamjobStore。问题是,有时调度的作业没有被执行,即使它是在过去或将来被调度的。作业数量非常少,排定程序上一直排定的作业总数不到20个,同时保证最多运行1个作业,所以我假设线程计数不是问题,我可以将它设置为ThreadCount1,它仍然可以工作。在servlet被销毁之前,调度程序也不会被关闭。那么

  • : 是一个从Hibernate获取数据的经典Spring服务。正如我上面所说的,在我搬到Spring Boot之前,这一直很有效。 当我用经典的Spring应用程序实现这段代码时,完成了对服务的自动化操作。