【问题标题】:How to run cron job using Quartz Scheduler framework in Java?如何在 Java 中使用 Quartz Scheduler 框架运行 cron 作业?
【发布时间】:2014-09-01 00:06:11
【问题描述】:

我在 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 吗?

【问题讨论】:

标签: java cron quartz-scheduler


【解决方案1】:

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

second minute hour day month week year

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

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

0 0 0 ? * *

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

更多信息,请参考:CronTrigger

我希望它有所帮助。

【讨论】:

【解决方案2】:
You can pass JobData if required

JobBuilder.newJob(JobClass.class);
jobDetail = jobBuilder.usingJobData("Key", "VALUE")
                    .withIdentity(dbname.getSchemaName(), "group1").build();


However for your case you need to modify cron expression provided in your cronschedular

http://www.cronmaker.com/

Follow above link to build cron expression

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    相关资源
    最近更新 更多