RabbitMQ知识总结(基本概念)

news2024/11/15 9:31:09

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

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

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

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

在这里插入图片描述

基本概念

在这里插入图片描述

Producer:

消息的生产者,是一个向交换机发布消息的客户端应用程序。

Connection:

生产者/消费者和 RabbitMQ 服务器之间建立的 TCP 连接。

Channel:

TCP 里面的虚拟连接。

  • Connection 相当于电缆,Channel 相当于独立光纤束,一条 TCP 连接中可以创建多条信道,增加连接效率。
  • 无论是发布消息、接收消息、订阅队列都是通过信道完成的。

为什么使用信道而不直接使用 TCP 连接通信?

  • TCP 连接的创建和销毁开销特别大,创建需要 3 次握手,销毁需要 4 次挥手。
  • 高峰时每秒成千上万条 TCP 连接的创建会造成资源巨大的浪费。
  • 而且操作系统每秒处理 TCP 连接数也是有限制的,会造成性能瓶颈。
  • 而如果一条线程使用一条信道,一条 TCP 链接可以容纳无限的信道,即使每秒成千上万的请求也不会成为性能的瓶颈。

Broker:

消息队列服务器实体,即 RabbitMQ 服务器。

Virtual Host:

虚拟主机,每个 Virtual Host 本质上就是一个 mini 版的 RabbitMQ 服务器,拥有自己的队列、交换机、绑定和权限机制。

当多个不同的用户使用同一个 RabbitMQ 服务器时,可以划分出多个虚拟主机。

  • RabbitMQ 默认的虚拟主机路径是 /

Exchange:

交换机,用来接收生产者发送的消息,并根据分发规则,将这些消息分发给服务器中的队列中。

不同的交换机有不同的分发规则

交换机类型有4种:

  • direct(直连):

    • 它会把消息路由到那些 BindingKey RoutingKey完全匹配的队列中。
  • fanout(扇形):

    • 它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。
  • topic(主题):

    • 将消息路由到 BindingKey RoutingKey 相匹配的队列中。
  • headers(标题):

    • 交换器不依赖于路由键的匹配规则来路由消息,而是根据发送的消息内容中 headers 属性进行匹配。

直连交换机(dirext exchange)为 RabbitMQ 默认的交换机。

Queue:

消息队列,用来保存消息直到发送给消费者。

它是消息的容器,也是消息的终点,消息一直在队列里面,等待消费者链接到这个队列将其取走。

Binding:

消息队列和交换机之间的虚拟连接,绑定中包含路由规则,绑定信息保存到交换机的路由表中,作为消息的分发依据。

Consumer:

消息的消费者,表示一个从消息队列中取得消息的客户端应用程序。

死信队列

在这里插入图片描述

当消息在队列中由于某些原因没有被及时消费而变成死信(Dead Message)后,消息中间件可以将其从当前队列发送到另一个队列中,这个队列就是死信队列。

在 RabbitMQ 中,由于有交换机的概念,实际是将死信发送给了死信交换机(Dead Letter Exchange,简称DLX)。

死信交换机 和 死信队列与普通的没有区别。

  • 死信队列只是一种特殊的队列,里面的消息仍然可以消费。

消息成为死信的情况:

  • 队列消息长度到达限制

  • 消费者拒签消息,并且不把消息重新放入原队列

  • 消息到达存活时间未被消费

延迟队列

延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。

但 RabbitMQ 中并未提供延迟队列功能,可以使用死信队列实现延迟队列的效果。

  • 延迟队列:TTL + 死信队列的合体。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1967445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法-二分搜索树节点的查找

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、二分搜…

【源码+文档+调试讲解】学生党务学习系统的设计与实现

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统大学生党务学习平台信息管理难度大,容错率低&…

MySQL基础练习题7-销售分析

题目:报告 2019年春季 才售出的产品。即 仅 在 2019-01-01 (含)至 2019-03-31 (含)之间出售的商品。 准备数据 分析数据 方法一:group by having 第一步:先找到要求的列 第二步&#xff1…

手持式洗地机该怎么选购?多款性能超好的洗地机推荐

传统的清洁方式,不仅费时费力,而且清洁效果也真的很一般,很多地方都清洁不到位。好在洗地机的出现很好的解决了这些问题,因为一款好的洗地机不仅能够让家务清洁事半功倍,而且还能有效除菌,地板更干净卫生&a…

某RED书旋转验证码识别(一)

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 本文的验证码网址如下,使用base64解码获得 因为旋转验证码能够处理的方式实在太多了,我将以处理的难度和方式依次讲解最简单到最难,到精度最高的方式,本文还是延续之前使用梯度计算的方式…

视频编辑SDK提供配套DEMO源码,提高开发效率

面对日益增长的视频制作需求,如何快速、高效且低成本地生产出专业级视频,成为众多企业面临的共同挑战。美摄科技,作为视频编辑技术的领航者,携其强大的视频编辑SDK及配套DEMO源码,为企业视频创作带来了革命性的解决方案…

Ubuntu系统下,截图软件(飞书,flameshot等)无法正常截图与编辑

Ubuntu系统下,截图软件(飞书,flameshot等)无法正常截图与编辑 问题描述: ubuntu系统下,飞书(设置截图快捷键),flameshot等截图工具无法正常使用,每次按快捷…

iOS ------ 持久化

一,数据持久化的目的 1,快速展示,提升体验 已经加载过的数据,用户下次查看时,不需要再次从网络(磁盘)加载,直接展示给用户 2.节省用户流量 对于较大的资源数据进行缓存&#xff…

2024小卷Spring Boot3.0教程思维导图整理

这是2024年小卷整理的最新spring Boot3.0实战教程的思维导图,后续将开始更新相关的笔记,欢迎新手朋友加入一起学习,如果您感兴趣不妨点赞关注下,您的支持是我更新的动力~加油!

【视觉SLAM】 G2O库编写步骤介绍

介绍G2O,并阐述基本使用方法。 G2O以稀疏优化器(SparseOptimizer)为核心,分为图的构建与求解器构建两部分,分别对应该图的上下两部分。 G2O编程步骤共分七步,如图所示: 构建求解器 1、创建一…

英飞凌 TC3XX单片机HSM内核开发-Secure Boot(七)

HSM UCB配置 UCB_HSM_ORIG 和 UCB_HSM_COPY配置描述 HSMCOTP保护配置了专用HSM闪存扇区的HSM独占和一次性可编程(OTP)保护。它提供了通过两个配置集增量添加此类保护到闪存扇区的可能性: 从UCB_HSMCOTP0_ORIG和UCB_HSMCOTP0_COPY派生的HSM…

day8 Excel教程——利用数据验证规范单元格输入!(超多干货)

day8 Excel教程——利用数据验证规范单元格输入! 本章目录 day8 Excel教程——利用数据验证规范单元格输入!1. 整数,小数和文本长度1.1 限制用户输入1(最小)和10(最大)之间的数字1.2 限制用户应输入小于或等于3%的小数(百分比)值1.3 限制用户应输入文本长度为18位的身份…

【卫星载荷之QF项目-001】Vivado 2018.3安装

1.简介 Vivado 是 FPGA 厂商赛灵思公司(Xilinx)于 2012 年起发布的集成设计环境。Vivado2018.3 是 2018 年 Xilinx 推出的 Vivado 最后一个版本,相对稳定。 2.软件下载 网上自己去官网即可获取安装资源包。 3.软件安装 解压缩安装包&…

来未来面试真题:根据树形表输出树形结构

根据以下所给代码补充完printNode方法,要求输出如下形式的树形结构 package com.ting.sort;import java.util.ArrayList; import java.util.HashMap; import java.util.List;public class Menu {static class Node{Integer id;Integer parentId;String name;Node(In…

【PyTorch】多对象分割项目

对象分割任务的目标是找到图像中目标对象的边界。实际应用例如自动驾驶汽车和医学成像分析。这里将使用PyTorch开发一个深度学习模型来完成多对象分割任务。多对象分割的主要目标是自动勾勒出图像中多个目标对象的边界。 对象的边界通常由与图像大小相同的分割掩码定义&#xf…

【MySQL进阶】事务隔离级别 MVCC

目录 MySQL事务隔离级别 1. 读未提交(Read Uncommitted) 2. 读已提交(Read Committed) 3. 可重复读(Repeatable Read)(默认隔离级别) 4. 串行化(Serializable) 表格总结 MVCC …

C++栈和队列(容器适配器)

目录 1.什么是适配器? 2.栈(stack) 3.队列(queue) 4.双端队列(deque) 5.优先级队列(priority_queue) 1.什么是仿函数? 2.仿函数有什么用? 3.优先级队列(priority_queue) 1.什么是适配器? 我们之前实现栈和队列&#xff0…

QTCreate中使用git进行代码的备份

一开始使用QTCreate设计UI时,都是手动保存,后面觉得应该升级一下自己的技术栈,把git工具学了一些,摸索两天。首先,git是一个版本控制工具,正常开发需要一个master和一个你自己需要的分支,在分支…

批量下载 B 站 视频的工具 downkyi

批量下载 B 站 视频的工具 downkyi 亲测好用 图片: 下载地址: https://github.com/leiurayer/downkyi