定时任务框架-quartz
依赖
<!-- 定时任务jar -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.1.7</version>
</dependency>
任务调度类
/**
*
* @作者 陈祥
* @创建时间 2018年5月29日
* @功能描述 定时任务, 分配结算大小B 业务方法实现
*/
public class DistributeSettlementDateJobService { //非大B分销商佣金结算 时间 每个月 20 号3点 触发
private final String DATE_DISTRI = "0 0 3 20 * ?";
// 大B 每天整点30分触发
private final String DATE_B_DISTRI = "0 30 * * * ?";
// 检查订单过期 每分钟触发
private final String DATE_ORDER = "30 * * * * ?";
// 自动好评, 每天 4点触发
private final String DATE_OrderEvaluate = "0 0 4 * * ?";
// 自动收货, 每天 2点触发
private final String DATE_OrderTake = "0 0 3 * * ?"; public void DistributeSettlement() throws Exception { SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler(); //结算小B 和 其他
JobDetail job = newJob(DistributeSettlementDateJobAll.class).withIdentity("job1", "group1").build();
Trigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule(DATE_DISTRI)).build();
sched.scheduleJob(job, trigger); //检查订单是否过期任务
job = newJob(OrderDateJob.class).withIdentity("job2", "group1").build();
trigger = newTrigger().withIdentity("trigger2", "group1").withSchedule(cronSchedule(DATE_ORDER)).build();
sched.scheduleJob(job, trigger); //结算大B
job = newJob(DistributeSettlementDateJobFoB.class).withIdentity("job3", "group1").build();
trigger = newTrigger().withIdentity("trigger3", "group1").withSchedule(cronSchedule(DATE_B_DISTRI)).build();
sched.scheduleJob(job, trigger); // 自动好评
job = newJob(OrderEvaluateDateJob.class).withIdentity("job4", "group1").build();
trigger = newTrigger().withIdentity("trigger4", "group1").withSchedule(cronSchedule(DATE_OrderEvaluate)).build();
sched.scheduleJob(job, trigger); // 自动收货
job = newJob(OrderTakeDateJob.class).withIdentity("job5", "group1").build();
trigger = newTrigger().withIdentity("trigger5", "group1").withSchedule(cronSchedule(DATE_OrderTake)).build();
sched.scheduleJob(job, trigger); sched.start();
} }
任务实现类,实现 job 接口, 重写 execute() 方法即可
package eidolon.time.service; import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import bingosoft.metro.model.OrderModel;
import leap.orm.dao.Dao;
import utils.redis.RedisUtil; /**
*
* @作者 陈祥
* @创建时间 2018年5月31日
* @功能描述 定时检查是否有订单过期
*/
public class OrderDateJob implements Job { private final String mapName = "orderTime"; @Override
public void execute(JobExecutionContext arg0) throws JobExecutionException { RedisUtil redisUtil = RedisUtil.getRedisUtil();
Map<String, String> mapAll = redisUtil.getMapAll(mapName);
if (null != mapAll && mapAll.size() > 1) { ArrayList<String> ids = new ArrayList<>();
// 当前时间
long newTime = new Date().getTime();
for (String key : mapAll.keySet()) {
Long lowTime = Long.valueOf(mapAll.get(key));
if (newTime > lowTime) { ids.add(key);
System.err.println("删除过期:" + key);
}
}
if(ids != null && ids.size() > 0 ){
HashMap<String, Object> params = new HashMap<>();
params.put("orderId", ids);
Dao.get().doTransaction((s) -> {
// 数据库修改状态
OrderModel.dao().executeNamedUpdate("orderDateJob-updateOrder", params);
// 删除缓存
for (String id : ids) {
redisUtil.delKeyAndValueForMap(mapName, id);
} });
}
} else {
System.err.println("没有过期");
} }
}
定时任务框架-quartz的更多相关文章
- 震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……
过场CG: 接到公司领导的文件指示,“小熊”需要在6月底去海外执行一个行动代号为[定时任务]的营救计划,这个计划关系到公司某个项目的生死(数据安全漏洞),作战部拟定两个作战方案: 方案一:使用务定 ...
- 开源定时任务框架Quartz(一)
简介 Quartz是OpenSymphony开源组织的一个开源项目,定时任务框架,纯Java语言实现,最新版本为2.3.0. 设计模式 Quartz中使用的设计模式如下: 1.Builder模式 2. ...
- 开源定时任务框架Quartz(二)
概述 上一篇文章完成了第一个Quartz程序的编写,这篇从Quartz中的几个重要对象来更深一层认识Quartz框架. Job和JobDetail Job是Quartz中的一个接口,接口下只有exec ...
- 定时任务框架-quartz 时间配置
quartz定时任务时间设置: 这些星号由左到右按顺序代表 : * * * * * * * 格式: [秒] [分] [小时] [日] [月] [周] [年] * 表示所有值. 例如:在分的字段上设置 ...
- java定时任务框架Quartz入门与Demo搭建
- XXL-JOB原理--定时任务框架简介(一)
https://blog.csdn.net/qq924862077/article/details/82595948 https://blog.csdn.net/qq924862077/article ...
- atititt.java定时任务框架选型Spring Quartz 注解总结
atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...
- 定时任务框架Quartz-(一)Quartz入门与Demo搭建
注:本文来源于:是Guava不是瓜娃 <定时任务框架Quartz-(一)Quartz入门与Demo搭建> 一.什么是Quartz 什么是Quartz? Quartz是OpenSympho ...
- Quartz小记(一):Elastic-Job - 分布式定时任务框架
Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架.去掉了和dd-job中的监控和ddframe接入规范部分.该项目基于成熟的开源产品Quartz和Zooke ...
随机推荐
- linux sort排序命令
1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. 2 sort的-u选项 在输出行中去除重复行. $ ...
- printf格式化输出
基本格式 printf [format] [文本1] [文本2] .. 常用格式替换符 %s 字符串 %f 浮点格式 %c ASCII字符,即显示对应参数的第一个字符 %d,%i 十进制整数 %o 八 ...
- 《Java编程思想》阅读笔记一
Java编程思想 这是一个通过对<Java编程思想>(Think in java)第四版进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会 ...
- Leetcode 之Regular Expression Matching(31)
正则表达式的匹配,还是挺难的.可根据下一个字符是不是*分为两种情况处理,需要考虑多种情况. bool isMatch(const char *s, const char *p) { if (*p == ...
- php设计模式六----桥接模式
1.简介 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦. 这种模式涉及到一个作为桥接 ...
- php5和php7的异常处理机制 ----thinkphp5 异常处理的分析
1.php异常和错误 在其他语言中,异常和错误是有区别的,但是PHP,遇见自身错误时,会触发一个错误,而不是跑出异常.并且,php大部分情况,都会触发错误,终止程序执行,在php5中,try catc ...
- 简述MapReduce计算框架原理
1. MapReduce基本编程模型和框架 1.1 MapReduce抽象模型 大数据计算的核心思想是:分而治之.如下图所示.把大量的数据划分开来,分配给各个子任务来完成.再将结果合并到一起输出.注: ...
- layui文件单文件和多文件的上传、预览以及删除和修改
活不多说,直接上代码 单文件上传 1.HTML <blockquote class="layui-elem-quote layui-quote-nm" style=" ...
- Maximum Gap——桶排序
Given an unsorted array, find the maximum difference between the successive elements in its sorted f ...
- GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置
GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置 前言 此篇博客主要为Pelican在Windows平台下的配置安装所写,在此过程中主要参考资料烟雨林博客.poem_of_ ...