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

浅谈Quartz(SimpleTrigger&CronTrigger)的更多相关文章

  1. 浅谈Trigger(SimpleTrigger&CronTrigger)

     1.Trigger是什么 Quartz中的触发器用来告诉调度程序作业什么时候触发,即Trigger对象是用来触发执行job的.  2.Quartz中的Trigger  3.触发器通用属性: JobK ...

  2. 浅谈Quartz定时任务调度

    一  开发概述 对于具有一定规模的大多数企业来说,存在着这样一种需求:存在某个或某些任务,需要系统定期,自动地执行,然而,对大多数企业来说,该技术的实现,却是他们面临的一大难点和挑战.  对于大部分企 ...

  3. 浅谈Quartz.Net 从无到有创建实例

    一.Quartz.Net介绍 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或 ...

  4. 浅谈Spring中的Quartz配置

    浅谈Spring中的Quartz配置 2009-06-26 14:04 樊凯 博客园 字号:T | T Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在 ...

  5. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  6. Spring整合Quartz (cronTrigger和simpleTrigger实现方法)

    Spring整合Quartz (cronTrigger和simpleTrigger实现方法) 之前有记录过一次springboot整合Quartz的文章,由于偶尔一次自己使用spring需要整合Qua ...

  7. iOS 核心动画 Core Animation浅谈

    代码地址如下:http://www.demodashi.com/demo/11603.html 前记 关于实现一个iOS动画,如果简单的,我们可以直接调用UIView的代码块来实现,虽然使用UIVie ...

  8. 【Fiori系列】浅谈SAP Fiori的设计美感与发展历程

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[Fiori系列]浅谈SAP Fiori的设计美 ...

  9. 浅谈springboot自动配置原理

    前言 springboot自动配置关键在于@SpringBootApplication注解,启动类之所以作为项目启动的入口,也是因为该注解,下面浅谈下这个注解的作用和实现原理 @SpringBootA ...

随机推荐

  1. 简单springboot及springboot cloud环境搭建

    springboot使用特定的方式,简化了spring的各种xml配置文件,并通过maven或者gradle,完成所需依赖,使用springboot maven插件,可直接输出可运行的jar包,省去了 ...

  2. 【读书笔记】C#高级编程(一).NET体系结构

    写在前面:从业两年来,一直停留在会用的阶段,而没有去仔细思考过为什么这么用,之前也大致扫过<c#高级编程>一书,这次想借一袭脑海中的冲动,再次好好仔细过过这本书,夯实基础,温故知新. 一. ...

  3. node.js之forEach

    forEach用法: var array1=[1,2,3]; array1.forEach(function(item,index){ console.log(item+'---'+index); } ...

  4. C#中TransactionScope的使用方法和原理(摘)

    出自51CTO博客:http://cnn237111.blog.51cto.com/2359144/1271600 在.net 1.1的时代,还没有TransactionScope类,因此很多关于事务 ...

  5. 如何查询日志文件中的所有ip,正则表达式

    IPV4必须满足以下四条规则: 1.任何一个1位或2位数字,即0-99: 2.任何一个以1开头的3位数字,即100-199: 3.任何一个以2开头.第2位数字是0-4之间的3位数字,即200-249: ...

  6. scss-@extend

    @extend指令用于共享规则和选择器之间的关系.它可以扩展所有其他类的样式在一个类中,也可应用于自己特定的样式. 查看如下scss@extend示例: .style{ font-size: 30px ...

  7. 洛谷P1941 飞扬的小鸟(背包 dp)

    题意 题目链接 Sol 很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数 向上转移的时候是完全背包 向下转移判断一下就可以 #include<bits/s ...

  8. 2018.10.17NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 100 +100\) 实际得分:\(100 + 100 + 60\) 辣鸡模拟赛.. 5min切掉T1,看了一下T2 T3,感觉T3会被艹爆因为太原了.. 淦了20 ...

  9. jQuery.vilidation.js登录&注册

    代码解析:通过ajax获取url路径链接php接口做登录和注册获取到的数据传到数据库. ajax利用四步: //1.创建一个ajax对象; //2.打开请求: //判断用户传递的是get还是post请 ...

  10. Windows 消息框架: SDK教程

    关键字:WindowsSDK 消息机制 http://www.codeproject.com/Articles/599/Windows-Message-Handling-Part-3 Handling ...