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

发布于 2021-11-29 20:45:59 字数 105 浏览 734 评论 6

定时任务的启动是在指定时间执行的,比如用户指定,周一13:30 的时候执行发布消息的任务。不知道这样的需要可以用什么来实现,网上关于定时任务好像都是在指定时间内重复执行某任务,没有关于指定时间执行任务的讨论啊!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

一笔一画续写前缘 2021-12-03 05:45:08

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;

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

爱的那么颓废 2021-12-03 05:30:09

你可以去找一个cron表达式的生成器,然后根据用户的时间反向更新到quartz的updateStarttime(好像是这个方法,太久了忘记了),Job中设置启动后自动失效就可以了。

多彩岁月 2021-12-03 01:19:55

谢谢大神

少女情怀诗 2021-12-02 20:03:26

Quartz 的Cron任务调度表达式一般人很难理解,在Googole上查询也没有发现类似的代码,所以开发了一个对Quartz Cron 表达式的可视化双向解析和生成的一个java的GUI程序,供使用Quartz的程序员参考和使用.https://github.com/wjw465150/CronExpBuilder

终止放荡 2021-11-30 10:22:27

看看这个

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文