依赖

                <!-- 定时任务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. tornado 响应头 中断 状态码 工作流程

    set_header    设置响应头 clear_header 清除响应头 add_header   增加响应头 self.flush  self.finish  中断 set_status     ...

  2. Leetcode 之Binary Tree Preorder Traversal(42)

    树的先序遍历.定义一个栈,先压入中间结点并访问,然后依次压入右.左结点并访问. vector<int> preorderTraversal(TreeNode *root) { vector ...

  3. python 单例模式4中实现方法

    python实现单例模式的方法: 1. 使用模块 python的模块在第一次导入时会生成.pyc文件,当第二次导入时就会直接加载.pyc文件,而不会再次执行模块代码. 只需将其单独放在一个模块里,并创 ...

  4. 【转载】Python: Enum枚举的实现

    转自:http://www.cnblogs.com/codingmylife/archive/2013/05/31/3110656.html   从C系语言过来用Python,好不容易适应了写代码不打 ...

  5. Elements in iteration expect to have 'v-bind:key' directives.' 提示错误如何解决?

    在学习vue过程中遇到Elements in iteration expect to have 'v-bind:key' directives.' 这个错误,查阅资料得知Vue 2.2.0+的版本里, ...

  6. php 公历农历互相转换

    废话不多,直接上代码 <?php class Lunar { /** * Created by 闻海南. * User: timeless * Date: 2018-5-29 * Time: 上 ...

  7. nodejs pm2使用

    参考地址:http://www.jianshu.com/p/43525232b03b 参考地址:http://blog.csdn.net/leo_perfect/article/details/536 ...

  8. 【PHPExcel实例】 php 导出 excel 实例

    CREATE TABLE `person` ( `) DEFAULT NULL, `name` ) DEFAULT NULL, `birthday` date DEFAULT NULL ) ENGIN ...

  9. ZOJ 1610.Count the Colors-线段树(区间染色、区间更新、单点查询)-有点小坑(染色片段)

    ZOJ Problem Set - 1610 Count the Colors Time Limit: 2 Seconds      Memory Limit: 65536 KB Painting s ...

  10. HDU 6463.超级无敌简单题-卡边界的暴力 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    超级无敌简单题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...