定时任务框架-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 ...
随机推荐
- 10 个打造 React.js App 的最佳 UI 框架
10 个打造 React.js App 的最佳 UI 框架 在本文中,我们将分享一些助你打造 React.js App 最佳的 UI 框架.它们具备你所需要的基本 React 组件,以及易用的 API ...
- IDEA 内存设置
-server -Xms2g -Xmx2g -XX:NewRatio=3 -Xss16m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled - ...
- dubbo支持的远程调用方式
dubbo RPC(二进制序列化 + tcp协议).http invoker(二进制序列化 + http协议,至少在开源版本没发现对文本序列化的支持).hessian(二进制序列化 + http协议) ...
- 使用 Visual Studio 部署 .NET Core 应用 ——ASP.NET Core 发布的具体操作
ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...
- UVA - 796
UVA- 796 /** 题意:给出一个图,然后看此图的存在的桥,并且输出是哪一个, 做法:Tarjan(不存在重边) **/ #include<iostream> #include< ...
- 使用python读取文本中结构化数据
需求 read some .txt file in dir and find min and max num in file. solution: echo *.txt > file.name ...
- eclipse+opencv
https://docs.opencv.org/2.4/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html
- Windows7 + OSG3.6 + VS2017 + Qt5.11
一.准备工作 下载需要的材料: 1. OSG稳定版源代码, 3.6.3版本 2. 第三方库,选择VS2017对应的版本 https://download.osgvisual.org/3rdParty ...
- .net core 2.0使用NLog写日志文件
原文地址:传送门 之前也看了 linezero 大佬写的教程,但是总是没有成功写入日志文件.按照 曲廉卿 的已成功,以下正文: 最近研究了一下NLog的使用方式,简单的入了一下门. 实现的功能,对于不 ...
- zabbix通过jvm监控tomcat
说明:zabbix是通过jvm工具监控tomcat,zabbix server通过连接jvm代理服务器获取tomcat的各种参数 zabbix server:192.168.1.31 tomcat服务 ...