当前位置: 首页 > news >正文

RabbitMQ:浅谈死信队列、延时队列

一、过期消息

在 RabbitMQ中存在2种方法可以设置消息的过期时间,第一种通过对队列进行设置,这种设置后,该队列中所有的消息都存在相同的过期时间,第二种通过对消息本身进行设置,那么每条消息的过期时间都不一样。如果同时使用这2种方法,那么以过期时间小的那个数值为准。当消息达到过期时间还没有被消费,那么那个消息就成为了一个死信消息。

  • 1、队列设置:在队列申明的时候使用 x-message-ttl 参数,单位为毫秒。
  • 2、单个消息设置:是设置消息属性的 expiration 参数的值,单位为毫秒。

二、死信队列

DLX(Dead Letter Exchange),死信交换器。

当队列中的消息被拒绝、或者过期会变成死信,死信可以被重新发布到另一个交换器,这个交换器就是DLX,与DLX绑定的队列称为死信队列。

造成死信的原因:
(1)信息被拒绝;
(2)信息超时;
(3)超过了队列的最大长度。

三、延迟队列

延迟队列存储的是延迟消息。

延迟消息指的是,当消息被发发布出去之后,并不立即投递给消费者,而是在指定时间之后投递。如:在订单系统中,订单有30秒的付款时间,在订单超时之后在投递给消费者处理超时订单。

RabbitMQ没有直接支持延迟队列,可以通过死信队列实现。在死信队列中,可以为普通交换器绑定多个消息队列,假设绑定过期时间为5分钟,10分钟和30分钟,3个消息队列,然后为每个消息队列设置DLX,为每个DLX关联一个死信队列。当消息过期之后,被转存到对应的死信队列中,然后投递给指定的消费者消费。


http://www.mrgr.cn/news/18548.html

相关文章:

  • 9.2 docker部署nmt:使用haproxy代理nginx
  • 城市综合治理可视化:提升管理效率与透明度
  • linux离线安装nacos
  • 数字图像处理基础:图像处理概念、步骤、方式介绍
  • 嵌入式开发中从C文件到BIN文件的具体细节
  • 【K8s】专题十三:Kubernetes 容器运行时之 Docker 与 Containerd 详解
  • 十大免费 LiDAR 数据查看器
  • 回收铱树脂浅析
  • Ribbon 源码分析【Ribbon 负载均衡】
  • 【开发记录】老项目集成xxljob并配置运行
  • 【项目自动化构建工具】gradle入门到进阶
  • SpringBoot+Vue实现Base64编码的PDF数据文件下载
  • 9月3日微语报,星期二,农历八月初一
  • WSL 在 Windows 上删除已经安装的 Ubuntu | WSL 再次重装 Ubuntu | cv2.imshow() 弹窗支持
  • 用于大屏显示日期为(2024年09月03日 星期二)时间格式
  • 机器学习面试:LR和线性回归的区别是什么?
  • 9行代码开发一个基于ollama的私有化RAG
  • Apache Tomcat 6.0.45 下载、安装和配置教程
  • K8s 节点管理:使用 kubeadm 删除和重新添加 Kubernetes 节点
  • 如何通过PLM系统提升企业研发效率与市场竞争力?