延迟任务实现-简单的延迟任务starter
2023-03-31 10:43:09 时间
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文件中引入
4、编写回调方法,注意方法需加回调注解并标明方法名,如下:
其中callbackHandle即是回调方法名,也是在我们提交延迟任务时需传入的方法名参数值
5、提交和终止延迟任务,如下:
首先注入DelayTaskService
然后通过DelayTaskService来提交任务
相关文章
- Erlang入门(二)—并发编程
- Java中4大基本加密算法解析
- 找程序员女神要QQ号码,结果……
- JAVA 异常对于性能的影响
- 程序员是怎样一群人
- 程序员要有持续产出
- 程序员如何更快的适应新工作
- Java查询大文本文件的处理方法
- 各种 Java 的序列化库的性能比较测试结果
- 企业级Java应用最重要的4个性能指标
- 聊一下C#开发者如何过渡到JAVA 开发者
- 让程序员跳槽的非钱原因
- Java中使用CompletableFuture处理异步超时
- 用医生的思考方式调试你的代码
- 关于 Java 对象序列化您不知道的 5 件事
- Java HashMap 核心源码解读
- 当编程语言都变成女孩子 猿哥想想都觉得冲动
- 假如明天失业了,我该去哪里
- Object-C中编写省略参数的多参函数
- 我们程序员为什么会感觉到累