zoukankan      html  css  js  c++  java
  • 浅谈Quartz(SimpleTrigger&CronTrigger)

     private void quartzOrderReturn(List<String> returnIds) {
            try {
                Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
                JobDataMap jobDataMap = new JobDataMap();
                jobDataMap.put("returnIds", returnIds);
                //1. 创建一个JodDetail实例 将该实例与Hello job class绑定    (链式写法)
                JobDetail jobDetail = JobBuilder.newJob(QuartzOrderReturn.class)// 定义Job类为QuartzOrderReturn类,这是真正的执行逻辑所在
                        .withIdentity(StrUtils.uuid())
                        .setJobData(jobDataMap)
                        .build();
                // 2. 定义一个Trigger,定义该job在10秒后执行,并且执行一次
                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(0)//定义重复执行次数是无限次
                        )
                        .build();
                // 4. 将trigger和jobdetail加入这个调度
                scheduler.scheduleJob(jobDetail, trigger);
                // 5. 启动scheduler
                scheduler.start();
                // 6. 任务执行后20秒后休眠
                Thread.sleep(startTime.getTime() + 20000L);
                // 7. 如果定时任务开启则关闭
                if (scheduler.isStarted()) {
                    scheduler.shutdown(true);
                }
            } catch (SchedulerException | InterruptedException e) {
                e.printStackTrace();
            }
        }
    ublic static final Logger log = LoggerFactory.getLogger(Object.class);
    
        @Override
        public void execute(JobExecutionContext context) {
            try {
                log.info("执行定时任务开始");
                JobDetail detail = context.getJobDetail();
                List<String> returnIds = (List<String>) detail.getJobDataMap().get("returnIds");
                OrderService orderService = (OrderService) SpringBeanFactoryUtils.getBeanByClass(OrderService.class);
                for (String returnId : returnIds) {
                    orderService.refundPrice(returnId);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    SLAM+语音机器人DIY系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic
    SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构
    2017年 年计划
    125. Valid Palindrome
    一道多树递归面试题
    顺序表查找和有序表查找
    c++中常见概念、关键字等的区别
    两个栈实现一个队列,两个队列实现一个栈
    150. Evaluate Reverse Polish Notation
    堆排序
  • 原文地址:https://www.cnblogs.com/EveningWind/p/10115797.html
Copyright © 2011-2022 走看看