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

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

刘明朗
2023-03-14

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

我跟随本教程是为了更好地理解如何使用Quartz框架。

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
    }
}
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每周运行,那么它应该打印出one-weekreport_week。但是如果JobA每个月都在运行,那么它应该打印出one-monthsreport_one_months所以下一个问题是--有没有什么方法,我们可以在运行JobA时向它传递参数?

共有1个答案

丁经国
2023-03-14

石英中cron的7个字段的含义:

second minute hour day month week year

年份字段是可选的。*表示每一个,例如,week字段中的*表示每一个星期,因此您应该在week字段和month字段中都使用*。注意当指定字段时,不要忘记在字段中使用

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

0 0 0 ? * *

希望有帮助。

 类似资料:
  • 我想基于cron表达式运行一个作业,但它应该在rest调用后从DB中查找cron表达式。 一旦rest api被命中,它应该等待cron表达式,我们可以从数据库或任何方法获得它,然后它应该在指定的时间启动。 它的工作方式与普通的方法调用类似。

  • 问题内容: 我试图在docker容器中运行cron作业 但对我没有用 我的容器只有cron.daily和cron.weekly文件 crontab,cron.d,cron.hourly …在我的容器中不存在 crontab -e也无法正常工作 我的容器使用/ bin / bash运行 问题答案: 这是我运行我的cron容器之一的方法。 Dockerfile: crontab.txt entry.s

  • 问题内容: 我正在尝试在调用shell脚本的docker容器中运行cronjob。 昨天我一直在网上搜索和堆栈溢出,但是我找不到真正可行的解决方案。 我怎样才能做到这一点? 编辑: 我已经创建了一个(带注释的)github存储库,上面有一个工作的docker cron容器,该容器以给定的时间间隔调用shell脚本。 问题答案: 您可以将crontab复制到映像中,以使从该映像启动的容器运行该作业。

  • 我创建了一个(有注释的)github存储库,其中有一个工作的docker cron容器,它以给定的时间间隔调用一个shell脚本。

  • 问题内容: 我只是想在CPanel中使用cron作业运行PHP脚本-这是正确的语法: 我没有收到任何电子邮件通知,说明cron已经完成,我需要对PHP文件做一些特定的事情吗? 问题答案: 在crontab系统中: 是php程序二进制文件路径(在某些系统的前夫不一样:在FreeBSD ,Linux的:) 应该是你的PHP脚本路径 应该是cron输出,例如: 因此,您可以通过查看cron输出来监视cr

  • 问题内容: 我想以分离模式在docker容器中运行python cron作业。我的设置如下: 我的python脚本是test.py 我的cron文件是my-crontab 而我的Dockerfile是 这种方法潜在的问题是什么?还有其他方法,它们的优缺点是什么? 问题答案: 我在尝试使cron作业在docker容器中运行时遇到的几个问题是: Docker容器中的时间不是UTC的本地时间; dock