JobDataMap 更新_04
生活随笔
收集整理的這篇文章主要介紹了
JobDataMap 更新_04
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第2篇講述了怎樣給job傳遞參數或者隨機數,但是,這個隨機數不會更新,舉個例子,執行第一次job的時 隨機數3 ,執行第2次job,隨機數仍然是3,因為執行每一次job都會實例化job實例對象
JobDataMap更新的使用場景:
舉個例子,執行第一次job的時隨機數3 ,間隔5秒,執行第2次job,隨機數仍然是3+5-8
使用@PersistJobDataAfterExecution可更新JobDataMap
JobDataMap更新示例
代碼示例:
package com.gblfy;import com.gblfy.job.MyJob; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory;import java.util.Random;public class QuartzStart {public static void main(String[] args) throws SchedulerException {//創建SchedulerScheduler scheduler = StdSchedulerFactory.getDefaultScheduler();scheduler.start();Random random = new Random();int count = random.nextInt(10);//創建JobDetailJobDetail jobDetail = JobBuilder.newJob(MyJob.class)//唯一標識.withIdentity("jobDetail1", "group1")//添加參數通過usingJobData方法,傳遞給job.usingJobData("count",count).build();//創建TriggerTrigger trigger = TriggerBuilder.newTrigger()//立即執行.startNow()//任務周期.withSchedule(SimpleScheduleBuilder.simpleSchedule()//間隔周期 單位s.withIntervalInSeconds(5)//一直執行.repeatForever()).build();//把jobDetail和trigger注冊到scheduler中scheduler.scheduleJob(jobDetail, trigger);try {Thread.sleep(60000);} catch (InterruptedException e) {e.printStackTrace();}scheduler.shutdown();} }job
package com.gblfy.job;import lombok.Getter; import lombok.Setter; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.PersistJobDataAfterExecution;import java.time.LocalTime;@PersistJobDataAfterExecution public class MyJob implements Job {@Getter@Setterprivate int count;@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {LocalTime localTime = LocalTime.now();count++;context.getJobDetail().getJobDataMap().put("count",count);System.out.println(localTime.toString() + "----count的值=" + count);} }總結
以上是生活随笔為你收集整理的JobDataMap 更新_04的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ant-Design-Vue 安装
- 下一篇: RabbitMQ 镜像集群之同步策略_专