Quartz定时调度

1.什么是定时调度

在SpringBoot中有Java自带的java.util.Timer类
SpringBoot自带的Scheduled来实现,Scheduled 在Spring3.X引入,默认SpringBoot自带该功能使用起来也很简单,在启动类级别添加
@EnableScheduling注解即可引入定时任务环境,但遗憾的是Scheduled默认不支持分布式环境
Quartz时钟调度框架

2.pom.xml

<!--    quartz-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

3.quartz配置类

@Configuration
public class Quartz {
    @Bean
    public JobDetail jobDetail(){
        return JobBuilder.newJob(MyJob.class).storeDurably().build();
    }

    @Bean
    public Trigger trigger(){
        SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
                .withIntervalInSeconds(1)//一秒一次
                .repeatForever();//永久重复
        return TriggerBuilder.newTrigger()
                .withIdentity("trigger", "group")
                .withSchedule(simpleScheduleBuilder)
                .forJob(jobDetail())
                .build();

    }

    //5秒触发一次
    @Bean
    public Trigger trigger2(){
        return TriggerBuilder.newTrigger()
                .withIdentity("trigger2", "group2")
                .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ? *"))
                .forJob(jobDetail())
                .build();

    }
}

4.job类

public class MyJob implements Job {
    private Logger logger = LoggerFactory.getLogger(MyJob.class);

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        TriggerKey triggerKey = jobExecutionContext.getTrigger().getKey();
        logger.info("触发器" + triggerKey.getName() + "-->所属组" + triggerKey.getGroup()
                        +sdf.format(new Date()) + "-->" + "sp quartz");
    }
}
posted @   lwx_R  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示