首页 > 其他分享 >延迟任务【黑马头条 - day05】

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

时间:2023-07-09 21:45:19浏览次数:31  
标签:队列 元素 任务 day05 死信 DelayQueue 头条 延迟

一、相关介绍

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

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

 

二、延迟任务的应用场景

 

三、技术对比

【DelayQueue】基于JVM

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

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

 

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

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

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

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

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

 四、redis 实现思路

 

标签:队列,元素,任务,day05,死信,DelayQueue,头条,延迟
From: https://www.cnblogs.com/Rover20230226/p/17539383.html

相关文章

  • mock延迟响应的接口
    在使用mocoAPI做接口模拟的过程中,遇到一个模拟接口响应时间的问题。有些情况下是需要进行延迟响应的,比如我想mock一个响应时间超过5s的接口,以观察端上会如何处理这种情况。mocoAPI本身是提供一个延迟的API,但是经过尝试之后发现,这个API只是用来异步请求接口的,并不能支持延迟响应......
  • Mysql8.0配置Mysql主从复制GTID复制和延迟从库应用
    一、Mysql主从复制1、Mysql主从复制的作用和原理  1)主从复制的作用  防止单节点数据库故障数据丢失 增强数据的安全性和可靠性 2)原理  主Mysql开启二进制日志 从数据库监听主Mysql二进制日志变化 从复制二进制日志到本地 读取复制的二进制日志执行二进制日......
  • RocketMq5.0 任意延迟时间 TimerMessageStore 源码解析
    TimerMessageStore简略介绍延迟队列rmq_sys_wheel_timer指定时间的延迟消息。会先投递到rmq_sys_wheel_timer队列中然后由TimerMessageStore消费队列数据,将数据消费到timerWheel使用时间轮算法,实现秒级任务TimerMessageStore操作的文件store\consumequeue\rmq_sy......
  • celery异步任务、延迟任务、定时任务
    异步任务#比如有个函数add,需要传入两个参数,使用delay就是异步任务#配置脚本详见:https://www.cnblogs.com/smyz/p/17525174.htmlres=add.delay(1,2)延迟任务@app.taskdefadd(a,b):print('正在计算中')time.sleep(5)returna+b#需要传入一个时间......
  • 延迟队列服务提供对外接口
    延迟队列微服务:redis:list-执行时间<=当前时间   zset-当前时间<执行时间<当前时间+5分钟添加任务:【以防任务数量过大在,一旦服务器挂掉,内存所有的数据都消失了,所以要做数据持久化】添加任务到数据库、符合条件的任务添加到redis【list,zset......
  • 货损、灭失、延迟配送怎么办?打破这几个点才是关键
    物流行业离不开讨论的一个核心话题就是物流质损。不管是在货物的运输、存储还是配送环节,都有可能发生货物损坏的情况。要降低货物质损的风险,有两个基本因素需要考虑:距离长短和环节次数。距离越短,货物摇晃挤压影响就越少;环节越少,货物抛刷、装卸次数就越少。除此之外,还有一些重要的措......
  • redis实现延迟任务
    实现思路:发布时间:立即发布、未来要发布list存立即发布,redis中的list是双向链表,方便添加查找性能较高。zset可以去重、排序,存储未来要发布的。 为什么要把任务存储到数据库中?延迟任务是一个通用的服务,任何有延迟需求的任务都可以调用该服务,内存数据库的存储是有限的,需要考虑......
  • JS逆向实战20——某头条jsvm逆向
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!网站目标网站:aHR0cHM6Ly93d3cudG91dGlhby5jb20v数据接口:aHR0cHM6Ly93d3cudG91dGlhby5jb20vYXBpL3BjL2xp......
  • day05--23.7.3JDK、JRE、JVM以及开发环境搭建
    JDK、JRE、JVMJDK:JavaDevelopmentKit--JAVA开发者工具--用于程序开发java--编译运行javajavac--编译运行javajavadoc--java生成文档jar--java打包成应用JRE:JavaRuntimeEnvironment--JAVA运行时环境appletlibrariesJVM:JavaVirtualMachine--JAVA虚拟机java开发......
  • 网关搭建【黑马头条】
    一、导入依赖<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><group......