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

如何防止石英作业立即启动

公冶阳德
2023-03-14
 ITrigger objESLJobTrigger = TriggerBuilder.Create()
                            .WithIdentity("Trigger-" + Key.ToString(), xxx.ToString())
                            .StartAt(DateTimeOffset.Parse(DateTime.Today.AddHours(4).ToString()).LocalDateTime)
                            .WithCronSchedule("0 0 0/4 ? * SUN-SAT", x => x.WithMisfireHandlingInstructionIgnoreMisfires())
                            .Build();

共有1个答案

房唯
2023-03-14

注释后更新:是的,您需要使用startat方法,但是:

>

  • 如果服务在凌晨4点之前开始,则需要在startat中使用“今天日期”,否则使用“明天日期”:

    var startAtDateTime = DateTime.Today.AddHours(4);
    if (startAtDateTime < DateTime.UtcNow)
    {
       startAtDateTime = startAtDateTime.AddDays(1);
    }
    
    and then use .StartAt(new DateTimeOffset(startAtDateTime))
    

    请注意,startat期望的时间是UTC格式的,而不是本地格式的,因此,如果您需要在本地时区的4am运行作业,请不要忘记时区偏移量。

  •  类似资料:
    • 我正在使用quartz调度器来调度一个Spring批处理作业。应用程序启动时没有任何异常,但它从不激发任何作业。 它运行得很成功,但经过更多的开发后,它停止了工作。我无法弄清楚我到底改变了什么配置导致了这一点。 有谁可以建议检查点在使用“JobRepositoryFactoryBean”,如果我没有或问题在其他地方。

    • 这是我用来立即激发job的代码:

    • 是否可以添加/删除/修改在Quartz Spring Boot中动态安排的作业(在运行时),由使用我的门户的最终用户。由于计划无法从外部访问,我不知道有什么办法。基本上,我需要将所有的时间表信息存储到数据库中并访问它们。Im构建的门户将被大量用户使用,实现这一目标的正确解决方案是什么? 否则我可以像下面这样使用cron吗 每5 mns扫描一次作业以实现此目的。

    • 问题内容: 是否可以建立可立即触发的工作?当我现在希望将工作触发时,我用当前日期和时间构建了一个cron表达式字符串- 我认为它太复杂了,是否有另一种方法可以立即触发该工作? 提前致谢。 问题答案: Quartz Scheduler中注册的所有作业均由JobKey唯一标识,该JobKey由名称和组组成。您可以触发具有给定的工作 JobKey 通过调用立即triggerJob(JobKey jobK

    • 我想用quartz scheduler使用jdbc数据存储立即执行作业~。然而,即使我使用now()或调用triggerjob进行调度,在调度和触发器fire之间也有20-30秒的延迟。 我尝试用一个简单的触发器执行作业: 并且我还尝试用调度程序触发: 下面是显示延迟的侦听器日志。

    • 问题内容: 我正在使用“石英计划”,并且有2个工作。第一项作业将执行大约2分钟的任务,第二项作业将被设置为清理临时文件。因此,我需要设置计划表,使其工作方式如下:在执行完第一项任务/完成任务后,我需要在第二项任务的帮助下进行清洁操作。 考虑示例9-Quartz 2.1.x下的作业侦听器,它声明我们可以定义一个名为jobWasExecuted(,)的方法;在Job Listener中,它在第一个作业