如何在Java中使用Quartz调度程序框架运行cron作业?
我使用Java中的Quartz调度器来运行cron作业。这是我第一次使用这个框架来运行cron作业,所以我感到有些困惑 我遵循这一点是为了更好地理解如何使用Quartz框架 我试图每周和每月运行如何在Java中使用Quartz调度程序框架运行cron作业?,java,cron,quartz-scheduler,Java,Cron,Quartz Scheduler,我使用Java中的Quartz调度器来运行cron作业。这是我第一次使用这个框架来运行cron作业,所以我感到有些困惑 我遵循这一点是为了更好地理解如何使用Quartz框架 我试图每周和每月运行JobA,所以我从基本示例开始- 这是我迄今为止得到的例子 public class JobA implements Job { @Override public void execute(JobExecutionContext context) throws J
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
}
}
下面是我的crontriggere示例,它安排作业运行
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每周运行一次,那么它应该打印出
1周
和report\u周
。但是,如果JobA每月运行一次,那么它应该打印出一个月
和报告一个月
,因此下一个问题是-有没有办法,我们可以在尝试运行JobA时将参数传递给JobA?quartz中cron的7个字段的含义:
second minute hour day month week year
year
字段是可选的*
表示每,例如,周
字段中的*
表示每周,因此您应该在周
字段和月
字段中使用*
。注
当指定了周
字段时,不要忘记在日
字段中使用?
我的示例cron条目适用于您的需求:
0 0 0 ? * *
这意味着每周和每月00:00:00运行作业,请根据需要进行调整
有关详细信息,请参阅:
我希望有帮助 注意:要编写自己的Cron表达式,请查看您可以使用
JobDataMap
参数化Job
:
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