淺談Quartz(SimpleTrigger&CronTrigger)
阿新 • • 發佈:2018-12-13
private void quartzOrderReturn(String returnId) { try { Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); JobDataMap jobDataMap = new JobDataMap(); jobDataMap.put("returnId", returnId); //1. 建立一個JodDetail例項 將該例項與Hello job class繫結 (鏈式寫法)JobDetail jobDetail = JobBuilder.newJob(QuartzOrderReturn.class)// 定義Job類為QuartzOrderReturn類,這是真正的執行邏輯所在 .withIdentity(returnId) .setJobData(jobDataMap) .build(); // 2. 定義一個Trigger,定義該job在4秒後執行,並且執行一次 Date startTime = newDate(); startTime.setTime(startTime.getTime() + 10000L); SimpleTrigger trigger = TriggerBuilder.newTrigger() .withIdentity(StrUtils.uuid(), HeaderNameConstants.getQuartzTrigger()).startNow()// 定義名字和組 .startAt(startTime) .withSchedule(SimpleScheduleBuilder .simpleSchedule() .withIntervalInSeconds(2)//定義時間間隔是2秒 .withRepeatCount(1)//定義重複執行次數是無限次 ) .build(); // 4. 將trigger和jobdetail加入這個排程 scheduler.scheduleJob(jobDetail, trigger); // 5. 啟動scheduler scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); } }
public class QuartzOrderReturn implements Job { public static final Logger log = LoggerFactory.getLogger(Object.class); @Override public void execute(JobExecutionContext context) { try { log.info("執行定時任務開始"); JobDetail detail = context.getJobDetail(); String returnId = (String) detail.getJobDataMap().get("returnId"); OrderService orderService = (OrderService) SpringBeanFactoryUtils.getBeanByClass(OrderService.class); orderService.refundPrice(returnId); } catch (Exception e) { e.printStackTrace(); } } }