依赖

                <!-- 定时任务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的更多相关文章

  1. 震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……

    过场CG:   接到公司领导的文件指示,“小熊”需要在6月底去海外执行一个行动代号为[定时任务]的营救计划,这个计划关系到公司某个项目的生死(数据安全漏洞),作战部拟定两个作战方案: 方案一:使用务定 ...

  2. 开源定时任务框架Quartz(一)

    简介 Quartz是OpenSymphony开源组织的一个开源项目,定时任务框架,纯Java语言实现,最新版本为2.3.0. 设计模式 Quartz中使用的设计模式如下: 1.Builder模式 2. ...

  3. 开源定时任务框架Quartz(二)

    概述 上一篇文章完成了第一个Quartz程序的编写,这篇从Quartz中的几个重要对象来更深一层认识Quartz框架. Job和JobDetail Job是Quartz中的一个接口,接口下只有exec ...

  4. 定时任务框架-quartz 时间配置

    quartz定时任务时间设置: 这些星号由左到右按顺序代表 : * * * * * * * 格式: [秒] [分] [小时] [日] [月] [周] [年] * 表示所有值. 例如:在分的字段上设置 ...

  5. java定时任务框架Quartz入门与Demo搭建

  6. XXL-JOB原理--定时任务框架简介(一)

    https://blog.csdn.net/qq924862077/article/details/82595948 https://blog.csdn.net/qq924862077/article ...

  7. atititt.java定时任务框架选型Spring Quartz 注解总结

    atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...

  8. 定时任务框架Quartz-(一)Quartz入门与Demo搭建

    注:本文来源于:是Guava不是瓜娃  <定时任务框架Quartz-(一)Quartz入门与Demo搭建> 一.什么是Quartz 什么是Quartz? Quartz是OpenSympho ...

  9. Quartz小记(一):Elastic-Job - 分布式定时任务框架

    Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架.去掉了和dd-job中的监控和ddframe接入规范部分.该项目基于成熟的开源产品Quartz和Zooke ...

随机推荐

  1. sicily 1059. Exocenter of a Trian

    Description Given a triangle ABC, the Extriangles of ABC are constructed as follows: On each side of ...

  2. FineReport——JS二次开发(下拉框)

    下拉框显示多列时,输入的内容检索的内容为显示值整行数据,而不是实际值. 下拉框选择之后,控件显示的是显示值而非实际值. 对于下拉框显示队列,可以有多种方法,但是经过测试大多数方法不适用,检索效率太低, ...

  3. MySQL取得某一范围随机数(MySQL随机数)

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)). 例如, 若要在7 到 12 的范围(包括7和12)内得到一个随 ...

  4. 使用 Visual Studio 部署 .NET Core 应用

    可将 .NET Core 应用程序部署为依赖框架的部署或独立部署,前者包含应用程序二进制文件,但依赖目标系统上存在的 .NET Core,而后者同时包含应用程序和 .NET Core 二进制文件. 有 ...

  5. mac date 和 Linux date实现从指定时间开始循环

    Linux date begin="2016-01-01" ; i < ; i++ )); do current=$(date -d "$i day $begin& ...

  6. ZOJ-2753

    Min Cut (Destroy Trade Net) Time Limit: 15 Seconds      Memory Limit: 32768 KB Given an undirected g ...

  7. JS中的对象和方法简单剖析

    众所周知,在js中对象就是精髓,不理解对象就是不理解js. 那么什么事js中的对象呢? 在js中,几乎一切皆对象: Boolean ,String,Number可以是对象(或者说原生数据被认作对象): ...

  8. 六十四 asyncio

    asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持. asyncio的编程模型就是一个消息循环.我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要 ...

  9. Optional int parameter 'id' is present but cannot be translated into a null value due to being decla

    这个错误可以将参数由int改为Integer

  10. go chapter 2 - read file(yaml)

    func main() { data, err := ioutil.ReadFile("D:/test/widua.go") if err != nil { fmt.Println ...