1. 程式人生 > >淺談Quartz(SimpleTrigger&CronTrigger)

淺談Quartz(SimpleTrigger&CronTrigger)

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 = new
Date(); 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();
        }
    }
}