延迟任务【黑马头条 - day05】

一、相关介绍

  定时任务:由固定周期的,有明确的触发时间

  延迟任务:没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件,任务可以立即执行,也可以延迟。

 

二、延迟任务的应用场景

 

三、技术对比

【DelayQueue】基于JVM

  JDK 自带 DelayQueue 是一个支持延时获取元素的阻塞队列,内部采用优先队列 PriorityQueue 存储元素,同时元素必须实现 Delayed 接口;在创建元素时可以指定多久才可以从队列中获取当前元素,只有在延迟期满时才能从队列中提取元素。

  使用 DelayQueue 作为延迟任务,如果程序挂掉之后,任务都是放在内存,消息会丢失,如何保证数据不丢失。

 

【RabbitMQ 实现延迟任务】TTL+死信队列(常用)

  TTL:Time To Live(消息存活时间)

  死信队列:Dead Letter Exchange(死信交换机),当消息成为 Dead message 后,可以重新发送另一个交换机(死信交换机)

 【redis 实现】zset 特性(常用)

   zset 数据类型的去重有序(分数排序)特点进行延迟。例如:时间戳(毫秒值)作为 score 进行排序

 四、redis 实现思路

 

posted @   青核桃啊  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示