easyTask介绍

  • 一个方便触发一次性或周期性任务执行的工具包,支持海量,高并发,高可用,宕机自动恢复任务

使用场景

  • 需要精确到秒的某一时刻触发任务执行。比如订单交易完成24小时后如果客户未评价,则系统自动给出评价。
  • 需要周期性的执行某个任务。比如每天下午6点,提醒员工下班关机。

特性

  • 使用简单
  • 秒级精度任务执行计划
  • 支持海量任务提交执行
  • 支持高并发执行任务
  • 支持任务持久化,宕机自动恢复任务计划
  • 支持自定义线程池、任务持久化保存路径

架构

开始使用

  • pom添加引用
<dependency>
<groupId>com.github.liuche51</groupId>
<artifactId>easyTask</artifactId>
<version>1.0.1</version>
</dependency>
  • 定义好您要执行的任务类 Define the task class you want to perform
public class CusTask1 extends Schedule implements Runnable {
private static Logger log = LoggerFactory.getLogger(CusTask1.class); @Override
public void run() {
Map<String, String> param = getParam();
if (param != null && param.size() > 0)
log.info("任务1已执行!姓名:{} 生日:{} 年龄:{} 线程ID:{}", param.get("name"), param.get("birthday"), param.get("age"),param.get("threadid")); }
}
  • 简单应用示例代码 Simply apply the sample code
public class Main {
private static Logger log = LoggerFactory.getLogger(Main.class);
private static AnnularQueue annularQueue=AnnularQueue.getInstance();
private static Object obj=new Object();
public static void main(String[] args){
allcustomSimpleSetTest();
}
static void allcustomSimpleSetTest(){
try {
annularQueue.start();
CusTask1 task1 = new CusTask1();
task1.setEndTimestamp(ZonedDateTime.now().plusSeconds(10).toInstant().toEpochMilli());
Map<String,String> param=new HashMap<String,String>(){
{
put("name","刘彻");
put("birthday","1988-1-1");
put("age","25");
put("threadid",String.valueOf(Thread.currentThread().getId()));
}
};
task1.setParam(param);
CusTask1 task2 = new CusTask1();
task2.setPeriod(30);
task2.setImmediateExecute(true);
task2.setTaskType(TaskType.PERIOD);
task2.setUnit(TimeUnit.SECONDS);
Map<String,String> param2=new HashMap<String,String>(){
{
put("name","Jack");
put("birthday","1986-1-1");
put("age","32");
put("threadid",String.valueOf(Thread.currentThread().getId()));
}
};
task2.setParam(param2);
annularQueue.submit(task1);
annularQueue.submit(task2);
obj.wait();
} catch (Exception e) {
e.printStackTrace();
}
}

注意

  • 此构件已在Windows和centos下做了适当测试,目前未在生产环境中使用过
  • 为了更好的保证系统故障自动恢复任务,请自定义程序任务持久化文件保存的路径(不同应用文件路径定义不同为好,以免被其他应用覆盖),并确保读写权限。如果以 jar包运行,文件默认在同级目录;如果以war包在tomcat下运行,文件默认在tomcat的bin目录下。
  • 如果您在使用过程中遇到问题,可以在这里提交

最新文章

  1. ACM: ICPC/CCPC Sudoku DFS - 数独
  2. 帮朋友急招PHP、Android开发工程师 西安 工资8k-12k
  3. Frenetic HelloSDNWorld
  4. Velocity(2)——引用
  5. [转]后缀自动机(SAM)
  6. win7进入不了系统故障修复
  7. Spring3 MVC Login Interceptor(Spring 拦截器)
  8. 判别linux机器字节序为大端还是小端
  9. Redis和Spring整合
  10. Linux 多用户系统
  11. 25个Java机器学习工具和库
  12. vagrant快速搭建LNMP环境并且打包带走留着以后用
  13. echarts中提示框的样式调整
  14. Django REST framework基础:版本控制
  15. 使用VSTS的Git进行版本控制(五)——从Team Services Portal管理分支
  16. Linux下执行Oracle的sql脚本
  17. .NET本质论 类型基础
  18. 基于MATLAB的均值滤波算法实现
  19. C++实现从一个文件夹中读出所有txt文件
  20. codevs 1080 线段树练习 CDQ分治

热门文章

  1. 寒武纪camp Day4
  2. Meteor跟踪器(Tracker)
  3. jsoncpp的api简要说明
  4. python 多线程中同步的小样例
  5. codeforces 394E Lightbulb for Minister 简单几何
  6. qt之旅-1纯手写Qt界面
  7. C 项目案例实践(1)数据结构之链表(0)
  8. browser user agent
  9. js控制页面显示
  10. Oracle - 查询语句 - 多表关联查询