Quartz怎么根据用户设定的时间执行定时任务(页面上用户自己指定,执行一次)

小鬼头love盘 发布于 2016/12/16 10:22
阅读 4K+
收藏 0
定时任务的启动是在指定时间执行的,比如用户指定,周一13:30 的时候执行发布消息的任务。不知道这样的需要可以用什么来实现,网上关于定时任务好像都是在指定时间内重复执行某任务,没有关于指定时间执行任务的讨论啊!
加载中
0
白石
白石
看看这个
0
白石
白石
Quartz 的Cron任务调度表达式一般人很难理解,在Googole上查询也没有发现类似的代码,所以开发了一个对Quartz Cron 表达式的可视化双向解析和生成的一个java的GUI程序,供使用Quartz的程序员参考和使用.https://github.com/wjw465150/CronExpBuilder
小鬼头love盘
小鬼头love盘
谢谢大神
0
J
Java王志远
你可以去找一个cron表达式的生成器,然后根据用户的时间反向更新到quartz的updateStarttime(好像是这个方法,太久了忘记了),Job中设置启动后自动失效就可以了。
0
broccoli0
broccoli0
public static void addQuartz(String cuid,String fId,String status,Object date){
QuantzPluginMine quartz = getQuartz();
Calendar calendar = Calendar.getInstance();
try {
if(date instanceof String){
date = DateUtil.toUtilDate(date+"", DateUtil.D2);
}
calendar.setTime((java.util.Date)date);
quartz.add(QuartzUtil.exp(calendar), fId+status, cuid, new FormStartAndStop(), QuartzUtil.getJobDataMap(cuid, fId, status));
} catch (ParseException e) {
e.printStackTrace();
}

}

public static void deleteJob(String cuid,String fId,String status){
try {
Scheduler scheduler = QuartzUtil.getQuartz().getScheduler();
Trigger trigger = null;
if((trigger = scheduler.getTrigger(new TriggerKey(fId+status, cuid)))!=null){
scheduler.deleteJob(trigger.getJobKey());
}
} catch (SchedulerException e) {
e.printStackTrace();
}
}

public static Trigger getTrigger(String cuid,String fId,String status){
Trigger trigger = null;
try {
trigger = (getQuartz().getScheduler() == null) ? null : getQuartz().getScheduler().getTrigger(new TriggerKey(fId+status, cuid));
} catch (SchedulerException e) {
e.printStackTrace();
}
return trigger;

昨天刚写的,和你需求基本一致,需要手动去添加定时、更改定时时间、删除定时

返回顶部
顶部