1.导入Quartz需要的pom包
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
2. 定时任务工具类 工厂模式调度,去创建一个定时任务
public class HelloScheduler { public static void main(String[] args) throws SchedulerException { //创建jobDetail绑定HelloJob JobDetail jobDetail = JobBuilder.newJob(HelloJob.class) .withIdentity("myJob","myGroup").build(); //创建触发器trigger每个2秒执行一次,一直执行 Trigger trigger = TriggerBuilder.newTrigger().withIdentity("111", "myGroup").startNow() //.withSchedule(SimpleScheduleBuilder.simpleSchedule() //这里是指每分钟执行一次 withIntervalInMinutes(1).repeatForever()) 定时几点钟 //这里cron表达式是说周一10.27分 .withSchedule(CronScheduleBuilder.cronSchedule("0 27 10 ? * MON-FRI")) .build(); //创建调度者工厂 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); //创建调度者 Scheduler scheduler = schedulerFactory.getScheduler(); //启动调度器 scheduler.start(); //设置调度任务 scheduler.scheduleJob(jobDetail, trigger); } }
3.业务逻辑类 只需要去实现JOB类
public class HelloJob implements Job {
private static final SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
Date now = new Date();
String currentTime = sdf.format(now);
System.err.println(context);
System.err.println("执行时间为:"+currentTime);
}
4.例如我们项目中的业务是会员生日给会员发送生日祝福消息,我们可以用定时任务每天去查当天过生日的会员集合,然后去发送消息
5.cron表达式可以使我们的定时更加灵活推荐去看在线Cron表达式生成器
网址为:在线Cron表达式生成器通过这个生成器,您可以在线生成任务调度比如Quartz的Cron表达式,对Quartz Cron 表达式的可视化双向解析和生成.
https://cron.qqe2.com/
本文介绍了如何引入Quartz库,通过工厂模式创建定时任务,设置Cron表达式进行灵活调度。示例中展示了如何创建一个每分钟执行一次的定时任务,以及如何编写业务逻辑类来处理如发送会员生日祝福等具体任务。推荐使用在线Cron表达式生成器辅助配置。

693

被折叠的 条评论
为什么被折叠?



