使用quartz scheduler安排java程序

时间:2012-03-01 04:31:38

标签: java hibernate quartz-scheduler

我需要在一周内运行一次特定程序,一个月一次,偶尔运行一次

CronTrigger trigger = newTrigger()
        .withIdentity("trigger1", "group1")
        .withSchedule(cronSchedule("0/20 * * * * ?"))
        .build();

应该在上面的代码中完成所有更改?特别是在这部分("0/20 * * * * ?")) 请帮忙

2 个答案:

答案 0 :(得分:2)

您需要根据用户的选择在多个时间表之间切换:

// Once a month (the first day at midnight)
0 0 0 1 * ? 

// Once a week (Sunday at midnight)
0 0 0 * * 1

// On a specific date (November 10, 2012)
0 0 0 10 11 ? 2012

如果要更改时间,您当然可以将零更改为其他值。请参阅完整指南here

答案 1 :(得分:0)

如果您不想使用cron表达式,您可以使用Quartz的内置功能来构建触发器,但我仍然认为cron表达式总是很小,如果您对它们感到满意,那么总是要走的路< / p>

每周

trigger=newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
.startAt(date).withSchedule(calendarIntervalSchedule()
.withIntervalInWeeks(weekly interval in int)).build();

每月

trigger=newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
.startAt(date).withSchedule(monthlyOnDayAndHourAndMinute(DAY_OF_MONTH, HOUR_OF_DAY,MINUTE))
.build();

一旦

trigger=newTrigger().withIdentity(cronTriggerDTO.getTiggerId(),"simpleGroup")
.startAt(date).forJob("myjob", "mygroup").build();