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来提交任务
标签:jar,value,任务,回调,方法,starter,延迟 From: https://www.cnblogs.com/yushuhui/p/16889804.html