美文网首页
quartz使用

quartz使用

作者: _若余 | 来源:发表于2017-07-05 21:51 被阅读0次

    note:
    maven添加quartz依赖

    <!--quartz -->
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>${quartz.version}</version>
    </dependency>
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz-jobs</artifactId>
        <version>${quartz.version}</version>
    </dependency>
    
    使用步骤:
    1. 实现job接口创建工作类
    2. 通过工厂类创建调度程序实例
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
    
    1. 使用JobBuilder通过工作类创建工作实例。可以设置jobKey和group,传递数据
      // define the job and tie it to our DumbJob class
      JobDetail job = newJob(DumbJob.class)
          .withIdentity("myJob", "group1") // name "myJob", group "group1"
          .usingJobData("jobSays", "Hello World!")
          .usingJobData("myFloatValue", 3.141f)
          .build();
    
    1. 使用TriggerBuilder为工作实例创建触发器,并设置触发条件。
      note:
      比较常用的的有SimpleTrigger和CronTrigger(cron表达式)
    Trigger incrTrigger = newTrigger()
            .withIdentity("incrTrigger", "crawlGroup")
            .withSchedule(cronSchedule("0 35 7-22/5 * * ?"))    // 每天8点到22点每隔5小时触发
            .forJob("incrCrawlJob", "crawlGroup")
            .build();
    
    1. 通调度程序注册job实例和触发器
    scheduler.scheduleJob(incrlJobDetail, incrTrigger);
    
    1. 启动调度程序
    scheduler.start();
    

    备注:

    • 一个触发器只能绑定一个JobDetail
    • 调度程序可以注册多个JobDetail和触发器
    • cron表达式可以在时间段范围的基础上设置间隔多长时间执行
      example:
      7-22/5(7点到22点,每隔5个小时执行一次)
    • JobDetail和触发器不绑定到调度程序上就不会执行
    • 不要忘记启动调度程序

    相关文章

      网友评论

          本文标题:quartz使用

          本文链接:https://www.haomeiwen.com/subject/ffhqhxtx.html