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

RabbitMQ知识总结(基本原理+高级特性)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

基本原理

消息的可靠性投递

RabbitMQ 消息的投递路径为:

  • 生产者 ------> 交换机 ------> 队列 ------> 消费者

在 RabbitMQ 工作的过程中,每个环节消息都有可能传递失败,可以通过以下三种模式来监听消息时候投递成功:

  • 确认模式(Confirm):可以监听消息是否从生产者成功传递到交换机。

  • 退回模式(Return):可以监听消息是否从交换机成功传递到队列。

  • 消费者消息确认(Consumer Ack):可以监听消费者是否成功处理消息。

高级特性

消费端限流

RabbitMQ 提供了一种 Qos(Quality Of Service,服务质量)服务质量保证功能。

即在非自动确认消息的前提下,如果一定数目的消息未被确认之前,不再进行消费新的消息。

通过消费端限流的方式限制消息的拉取速度,达到保护消费端的目的。

不公平分发

在 RabbitMQ 中,多个消费者监听同一条队列,则队列默认采用的轮询分发。

但是在某种场景下这种策略并不是很好,例如消费者1 处理任务的速度非常快,而其他消费者处理速度却很慢。

  • 此时如果采用公平分发,则消费者1 有很大一部分时间处于空闲状态。
  • 此时可以采用不公平分发,即谁处理的快,谁处理的消息多。

消息存活时间

可以设置消息的存活时间(Time To Live,简称TTL),单位是毫秒,当消息到达存活时间后还没有被消费,会被移出队列。

RabbitMQ 可以对队列的所有消息设置存活时间,也可以对某条消息设置存活时间。

  • 消息到达存活时间未被消费时,消息会被放入死信队列。

优先级队列

RabbitMQ 优先级队列(Priority Queue)是一种特殊的队列,它根据消息的优先级将其放置在队列中。

当消费者从队列中获取消息时,它将按照优先级从高到低的顺序获取消息。

优先级队列可以用于处理一些需要按照优先级处理的消息,例如日志记录、任务调度等。

http://www.lryc.cn/news/418790.html

相关文章:

  • 字符串切割split
  • Python中的 `continue` 语句:掌握循环控制的艺术
  • AI安全新纪元:智能体驱动的网络安全新范式
  • c语言学习,isascii()函数分析
  • DAMA学习笔记(十二)-数据质量
  • 查找项目中丢失脚本的物体
  • 支付宝开放平台竟出现一张神秘人脸!
  • 每日学术速递8.8
  • 【JVM基础12】——垃圾回收-说一下JVM有哪些垃圾回收器?
  • 进阶学习------linux运维读写执行权限
  • 视频循环存储的实现
  • 在centOS系统中使用docker部署Jenkins
  • Qt 将生成的exe文件自动复制到其它目录下
  • openwrt下,用iptable转发端口访问远程的SMB服务
  • JVM类加载中的双亲委派机制
  • 【OpenCV C++20 学习笔记】范围阈值操作
  • 【Material-UI】Checkbox组件:Indeterminate状态详解
  • 一文了解K8S(Kubernates)
  • 三星、小米和 OPPO设备实验室将采用Android设备流技术
  • 华为OD-D卷万能字符单词拼写
  • 顶象文字点选模型识别
  • C#如何将自己封装的nuget包引入到项目中
  • 数据结构(学习)2024.8.8(栈,队列)
  • 服务端开发常用知识(持续更新中)
  • MySQL入门学习-运维与架构.复制过滤器
  • 【深度学习】生成领域里,Normalizing Flow、GAN、VAE、Diffusion Models的区别是什么?
  • Qt 串口通信(C++)
  • 聊聊AUTOSAR: 基于DaVinci的SecOC开发与配置
  • .net6.0 重启控制台 命令
  • LVS 调度器 nat和DR模式