zoukankan      html  css  js  c++  java
  • Quartz定时任务

    Quartz简介

    quartz是一个由java编写的任务调度库,由OpenSymphony组织开源出来。绝大多数公司都会用到任务调度这个功能, 比如公司需要定期执行任务调度生成报表, 或者比如博客什么的定时更新之类的,都可以靠Quartz来完成。

    Quartz的基本组成部分:

    • 调度器:Scheduler

    • 任务:JobDetail

    • 触发器:Trigger

    案例:

    把Redis中的博客点击量在凌晨0点时持久化进Mysql

    1.添加Quartz依赖

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

    2.创建一个任务

    import com.cch.gofy.service.ArticleInfoService;
    import lombok.extern.slf4j.Slf4j;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.scheduling.quartz.QuartzJobBean;
    
    import java.util.Date;
    
    @Slf4j
    public class PersistenceJob extends QuartzJobBean {
    
        @Autowired
        ArticleInfoService articleInfoService;
    
        @Override
        protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            log.info("PersistenceJob---------"+new Date());
            articleInfoService.persistenceTraffic();//将redis里的访问量持久化方法
        }
    }

    3.创建Quartz配置类

    import com.cch.gofy.util.PersistenceJob;
    import org.quartz.*;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class QuartzConfig {
    
        String identity = "PersistenceTraffic";
    
        @Bean
        public JobDetail quartzJob(){
            return JobBuilder.newJob(PersistenceJob.class)
            .withIdentity(identity).
            storeDurably().build();
        }
    
        @Bean
        public Trigger quartzTrigger(){
            CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0 0 * * ? "); //参数为Cron表达式,既让job任务执行的时间,这里是每天凌晨0点
    
            return TriggerBuilder.newTrigger().forJob(identity)
                    .withIdentity(identity)
                    .withSchedule(scheduleBuilder)
                    .build();
        }
    
    }

     我的个人博客 www.gofy.top

  • 相关阅读:
    如何在.netcore 上实现 Rbac 权限管理
    socket编程之TCP开发中的PEEK_MSG的使用与见解
    简述单例模式的一些优缺点及其评价
    排查线上内存泄漏,RingBufferLogEvent类内存占用过高,skyWalking内存占用过高
    Centos7安装docker(报错:container-selinux >= 2:2.74)
    JSP3.4
    Java SM2加密、解密、签名、验签
    获取properties文件中的
    五种生成唯一id方式的对比
    SpringBoot 改造成 https访问
  • 原文地址:https://www.cnblogs.com/gaofei200/p/12701893.html
Copyright © 2011-2022 走看看