设为首页 加入收藏

TOP

延迟任务实现-简单的延迟任务starter
2023-07-25 21:32:42 】 浏览:26
Tags:任务实 简单的 任务 starter

github项目地址:delay-task-schedule

大家还有什么好的方法或需要改进的地方欢迎大家评论

实现原理

1)延迟任务主要就是要保证任务的有序性,这一点mq不太容易实现,mq主要就是保证可以按照添加的顺序来执行,要想实现按照时间来排序有点困难,而这个恰巧可以通过redis的zset来实现,我们可以将执行时间作为score来添加zset数据,这样先执行的数据就会排在最前面,只需要取最前面的数据判断score值是否小于等于当前时间就可以确定要不要执行回调方法了

2)key-value设置,我们添加了延迟任务该怎么确定调用那个回调方法呢?这里我们可以用一个通用前缀拼接上回调方法名来做key,value可以使用回调参数转换的字符串作为value,然后根据方法名和参数可以找到对应的回调方法并调用

3)具体集成步骤

(由于jar包没有上传到maven仓库所以需要自己将jar部署到本地仓库)

1、下载项目的release代码自己打jar包

2、使用maven命令将jar部署到本地仓库,命令如下:mvn install:install-file -Dfile="jar包所在绝对路径" -Dpackaging=jar -DgroupId="com.yush" -DartifactId="delay-task-schedule" -Dversion="1.0.0"

3、在自己项目pom文件中引入

image

4、编写回调方法,注意方法需加回调注解并标明方法名,如下:

image

其中callbackHandle即是回调方法名,也是在我们提交延迟任务时需传入的方法名参数值

5、提交和终止延迟任务,如下:

首先注入DelayTaskService

然后通过DelayTaskService来提交任务

image

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇第2-3-2章 环境搭建-文件存储服务.. 下一篇【深入浅出 Yarn 架构与实现】3-1..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目