gpt4 book ai didi

java - 如何使用 Java 中的 Quartz Scheduler 框架运行 cron 作业?

转载 作者:行者123 更新时间:2023-12-01 22:44:05 24 4
gpt4 key购买 nike

我正在 Java 中使用 Quartz Scheduler 来运行 cron 作业。这是我第一次使用这个框架来运行 cron 作业,所以我有一些困惑。

我正在关注这个tutorial更好地了解如何使用 Quartz 框架。

我尝试每周和每月运行JobA,所以我从基本示例开始 -

这是我迄今为止得到的示例。

public class JobA implements Job {

@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("Job A is runing");

// print whether it is week or month
}
}

下面是我的 CronTriggerExample,它安排作业运行

public class CronTriggerExample {
public static void main(String[] args) throws Exception {

JobKey jobKeyA = new JobKey("jobA", "group1");
JobDetail jobA = JobBuilder.newJob(JobA.class).withIdentity(jobKeyA)
.build();

Trigger trigger1 = TriggerBuilder
.newTrigger()
.withIdentity("dummyTriggerName1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("5 8 * * 6 ?"))
.build();

Scheduler scheduler = new StdSchedulerFactory().getScheduler();

scheduler.start();
scheduler.scheduleJob(jobA, trigger1);
}
}

问题陈述:-

我不确定如何使用上述代码每周和每月运行 JobA。在我的例子中,一周和一个月的 cron 选项卡条目是什么?我不想在晚上 8 点到凌晨 5 点之间运行任何作业,任意一天都可以。

如果 JobA 每周运行,那么它应该打印出 one-weekreport_week。但是如果 JobA 每个月都运行,那么它应该打印出 one-monthreport_one_month 所以下一个问题是 - 有什么办法,我们可以在什么时候将参数传递给 JobA我们尝试运行它?

最佳答案

quartz中cron的7个字段的含义:

second minute hour day month week year

年份字段是可选的。 * 表示每个,例如 week 字段中的 * 表示每周,因此您应该在两者中都使用 * week 字段和 month 字段。笔记当指定 week 字段时,不要忘记在 day 字段中使用 ?

我的示例 cron 条目满足您的要求是:

0 0 0 ? * *

这意味着每周和每月的 00:00:00 运行该作业,请根据您的需要进行调整。

更多信息请引用:CronTrigger .

希望对您有帮助。

关于java - 如何使用 Java 中的 Quartz Scheduler 框架运行 cron 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25597398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com