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();
            }
        }
  • 相关阅读:
    一个人是否靠谱,闭环很重要(深度)
    远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
    如何量化考核技术人的 KPI?
    ECharts
    Spring IO Platform介绍
    百亿级日访问量的应用如何做缓存架构设计?
    大型分布式系统中的缓存架构
    Delphi实现屏幕截图、窗口截图、指定区域截图
    Delphi窗体重绘API
    GdiPlus 一个给 Delphi 提供的新的 GDI+ 接口很好用!
  • 原文地址:https://www.cnblogs.com/EveningWind/p/10115797.html
Copyright © 2011-2022 走看看