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 @ 2022-10-30 11:11  lwx_R  阅读(40)  评论(0)    收藏  举报