Quartz动态参数传递 | 您所在的位置:网站首页 › quartz参数 › Quartz动态参数传递 |
Quartz动态参数传递 参数传递JobBuild创建jobDetail的时候,用setMapDate的方式,传递参数 然后可以再job类的描述,jobcontext中获得jobMapDate。 动态参数思考?为什么普通的job中,运行的时候,数据是不变的? 因为触发器触动后,创建的是一个新的job实例,两个实例初始化的时候,并不会有参数共享的问题, 因为他们会自动重新初始化参数。 怎么动态设置? 很简单,防止内存中多个实例,防止同时修改,出现资源争夺, 二,进行参数共享设置。所以有以下两个注解 @PersistJobDataAfterExecution 共享JobData在执行后@DisallowConcurrentExecution 不允许并发简单Demo代码 package quartz.two; import org.quartz.*; /** * @program: MybatisStudy * @description: 普通job * @author: cuteDog * @create: 2019-03-10 22:57 **/ @PersistJobDataAfterExecution @DisallowConcurrentExecution public class NormalJob implements Job { public NormalJob() { } public String page; public String ceshi; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { dosay(); JobDataMap dataMap = jobExecutionContext.getJobDetail().getJobDataMap(); dataMap.put("page",page); dataMap.put("ceshi",ceshi); } public void dosay(){ System.out.println("page:"+page); System.out.println("ceshi:"+ceshi); Integer pageInt = Integer.parseInt(page); Integer ceshiInt=Integer.parseInt(ceshi); pageInt++; ceshiInt++; page=pageInt.toString(); ceshi=ceshiInt.toString(); System.out.println(page+"******"); System.out.println(ceshi+"******"); } public String getPage() { return page; } public void setPage(String page) { this.page = page; } public String getCeshi() { return ceshi; } public void setCeshi(String ceshi) { this.ceshi = ceshi; } } package quartz.two; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; /** * @program: MybatisStudy * @description: 定时任务配置类 * @author: cuteDog * @create: 2019-03-10 23:01 **/ public class QuartzConfig { public static void main(String[] args) throws SchedulerException { Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); JobDetail jobDetail = JobBuilder.newJob(NormalJob.class) .withIdentity("创建一个动态改变参数job") .withDescription("这是job描述") .usingJobData("page", "12") .usingJobData("ceshi", "11") .build(); CronTrigger trigger = TriggerBuilder.newTrigger() .withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ? *")) // SimpleScheduleBuilder.simpleSchedule() // .withIntervalInMilliseconds(2)) // .startNow() // .usingJobData("page", "12") // .usingJobData("ceshi", "11") .build(); scheduler.scheduleJob(jobDetail,trigger); scheduler.start(); // } } |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |