浅谈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();
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/EveningWind/p/10115797.html