发布文章添加延迟任务
{{ interaction.likeNum == 0 ? (pageType === 'video' ? '抢首赞' : '点赞') : formatNumber(interaction.likeNum) }}
{{ interaction.collectionNum == 0 ? '收藏' : formatNumber(interaction.collectionNum) }}
{{ interaction.discussNum == 0 ? (pageType === 'video' ? '抢沙发' : '讨论') : formatNumber(interaction.discussNum) }}
分享
适合人群
有此功能需求的同学, 可以把代码搬过去直接改成自己的需求使用即可
你将会学到
如何正确使用RabbitMQ实现延迟消息队列,使用Redis的订阅发布模式
课程简介
2)延迟任务概述
2.1)什么是延迟任务
定时任务:有固定周期的,有明确的触发时间
延迟队列:没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件,任务可以立即执行,也可以延迟
场景一:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单;如果期间下单成功,任务取消
场景二:接口对接出现网络问题,1分钟后重试,如果失败,2分钟重试,直到出现阈值终止
2.2.1)DelayQueue
JDK自带DelayQueue 是一个支持延时获取元素的阻塞队列, 内部采用优先队列 PriorityQueue 存储元素,同时元素必须实现 Delayed 接口;在创建元素时可以指定多久才可以从队列中获取当前元素,只有在延迟期满时才能从队列中提取元素
DelayQueue属于排序队列,它的特殊之处在于队列的元素必须实现Delayed接口,该接口需要实现compareTo和getDelay方法
getDelay方法:获取元素在队列中的剩余时间,只有当剩余时间为0时元素才可以出队列。
compareTo方法:用于排序,确定元素出队列的顺序。
展开更多
{{tips.text}}
{{ noteHeaderTitle }}
笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
{{ detail.username }}
公开笔记对他人可见,有机会被管理员评为“优质笔记”
{{ noteEditor.content.length }}/2000
公开笔记
保存提问
讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。
记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交课程大纲
自动连播
28课时
2小时学习SVN版本控制工具-帮助你成为项目经理
2665人学习
涛哥
5.0
¥9.90
14课时
1小时学习项目构建工具Maven
2305人学习
涛哥
5.0
¥9.90
55课时
ElasticSearch站内搜索详细讲解
2178人学习
涛哥
4.8
¥19.90
14课时
新版前后端接口安全技术JWT+RSA加密
1770人学习
涛哥
4.9
¥19.00
12课时
SpringBoot整合MyBatis入门
1422人学习
涛哥
5.0
¥5.00
26课时
3小时学习Eureka和Nacos-注册中心-配置中心
1312人学习
涛哥
5.0
¥19.90
15课时
2小时学习前后端接口安全技术-JWT
966人学习
涛哥
5.0
¥19.00
14课时
2小时学习SpringBoot微服务架构思想
937人学习
涛哥
5.0
¥19.90