首页 > 其他分享 >延迟任务实现-简单的延迟任务starter

延迟任务实现-简单的延迟任务starter

时间:2022-11-14 17:57:16浏览次数:57  
标签:jar value 任务 回调 方法 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

标签:jar,value,任务,回调,方法,starter,延迟
From: https://www.cnblogs.com/yushuhui/p/16889804.html

相关文章

  • spring-boot-starter-webflux
    webflux:反应式编程reactor的产物,采用发布订阅模式,引入netty的nio,比较适合IO密集型应用。因普遍应用使用的DB链接是IO阻塞型,因此在一般应用中无法体现它的优势。redis和m......
  • 一文学会线程池、任务调度的使用
    一文学会线程池、任务调度的使用本文主要讲解线程池以及定时任务的使用,以及在分布式环境下、JUC线程池和Spring线程池的弊端。起因:分布式换环境下的定时任务问题❓......
  • kotlin 内部迭代和延迟计算
    一、内部的迭代函数filter(e->返回true和false)判断数值是否加入新的数组map(e->返回调整e之后的值)对数组中每个数进行调整,并存入新的数组reduce(total,e->返回......
  • 任务理解与分工
    任务理解与分工团队任务:1小组讨论对课程设计任务的理解2进行任务的功能划分和分工3任务的进度安排个人任务:1给出自己对分配任务的理解2给出会遇到的问题及......
  • 定时任务
    定时任务文档1.实现方案1、Timer2、线程池3、mq的延时队列4、QUARTZ1.搭配cron表达式使用2.支持年,spring不支持年3.在周几的位置,quartz的周1是2,spring的周1是14.......
  • Go 语言项目源码解析:定时任务库 cron
    环境准备首先我们将源码克隆(Fork)为自己的个人仓库,只需要在GitHub项目主页点击Fork按钮,然后输入项目名称点击确认即可。克隆完毕后,可以下载到本地,或者直接在科隆后的Git......
  • 渗透测试的复现任务
    流程报告(WalkThroughWriteUp)一、漏洞渗透测试按照复现内容首先将easyfilesharingserver拖移到靶机(Windows)并解压然后在kali虚拟机中使用nmap—sV目标IP地址得到......
  • 定时任务 & 定时线程池
    定时线程池使用场景:1.分布式锁-redis2.springCloud-服务注册与发现中心ScheduledThreadPoolExecutor它用来处理延时任务或定时任务。   它接收Schduled......
  • 超算第二次考核任务
    后缀表达式/* 第一版中缀表达式便后缀表达式*/#include<iostream>#include<bits/stdc++.h>#include<string.h>#defineMAX1001usingnamespacestd;enumfuhao......
  • uniapp之uni-starter小程序多端研发框架搭建与项目实践
    随着移动互联网的飞速发展,无数移动APP琳琅满目;在移动App的发展的基础上,衍生了小程序、轻应用技术,它随时可用,但又无需安装卸载。小程序是一种不需要下载安装即可使用的应用,......