【问题标题】:Spring SimpleTriggerContext get proper nextExecutionTimeSpring SimpleTriggerContext 获得正确的 nextExecutionTime
【发布时间】:2019-10-04 03:10:42
【问题描述】:

我的工作每 10 分钟运行一次。我不想使用基于上一个作业运行的 Spring Scheduler 下一个作业将安排运行。假设第一个作业在上午 10:15 运行,后续作业需要在上午 10:25 运行。当我用谷歌搜索时,我看到了nextExecutionTime 的帖子。当我使用nextExecutionTime 时,我的后续工作在 10:20 而不是 10:25 运行。下面是我的代码,谁能告诉我如何在上次运行后的 10 分钟内运行我的工作。

CronTrigger trigger = new CronTrigger("0 0/10 * * * ?");
SimpleTriggerContext triggerContext = new SimpleTriggerContext();
triggerContext.update(Date.from(ZonedDateTime.now().toInstant()), Date.from(ZonedDateTime.now().toInstant()), Date.from(ZonedDateTime.now().toInstant()));
Date nextFireAt = trigger.nextExecutionTime(triggerContext);
System.out.println(nextFireAt);

【问题讨论】:

    标签: java cron spring-scheduled


    【解决方案1】:

    你可以试试下面的。我在下面提供序列。

    1. 立即获取日期。
    2. 将日期加 10 分钟并获得新的更新日期
    3. 更新like triggerContext.update(null, null, date in which you have added 10 mins);

    【讨论】:

    • 不幸的是它不起作用。我在 10:09 运行我的程序,所以下一个作业应该在 10:19 执行,但它在 10:20 执行。
    • 该作业所用的时间是多少?我的意思是这项工作需要多少钱?
    • 执行时间为20-30秒
    • 好的,那么在开始实际运行Job之前,将日期对象作为Date currentDate = new Date();然后加 10 分钟。希望它能解决问题。
    • 我将 currentDate 更新为 10 分钟它不起作用CronTrigger trigger = new CronTrigger("0 0/10 * * * ?"); impleTriggerContext triggerContext = new SimpleTriggerContext();triggerContext.update(null, null,Date.from(ZonedDateTime.now().plusMinutes(10).toInstant()));Date nextFireAt = trigger.nextExecutionTime(triggerContext); System.out.println(nextFireAt);
    猜你喜欢
    • 2021-01-18
    • 2019-08-19
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2021-12-25
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多