交换机与队列的介绍

1.流程
首先先介绍一个简单的一个消息推送到接收的流程,提供一个简单的图
在这里插入图片描述

黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲)将数据处理入列后,最终右边的蓝色圈圈消费者获取对应监听的消息。
2. 交换机类型(面试题)
常用的交换机有以下三种,因为消费者是从队列获取信息的,队列是绑定交换机的,所以对应的消息推送/接收模式也会有以下几种:
1、Direct Exchange
直连型交换机,根据消息携带的路由键将消息投递给对应队列。
大致流程,有一个队列绑定到一个直连交换机上,同时赋予一个路由键 routing key 。
然后当一个消息携带着路由值为abc,这个消息通过生产者发送给交换机时,交换机就会根据这个路由值abc去寻找绑定值的队列。
2、Fanout Exchange
扇型(广播)交换机,这个交换机没有路由键概念,就算你绑了路由键也是无视的。 这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列。
3、Topic Exchange
主题交换机,这个交换机其实跟直连交换机流程差不多,但是它的特点就是在它的路由键和绑定键之间是有规则的。
简单地介绍下规则:

  • (星号) 用来表示一个单词 (必须出现的)

(井号) 用来表示任意数量(零个或多个)单词

// * 代表两点之间一个占位单词
// # 代表后面所有,匹配所有
通配的绑定键是跟队列进行绑定的,举个小例子
队列Q1 绑定键为 .TT. 队列Q2绑定键为 TT.#
如果一条消息携带的路由键为 A.TT.B,那么队列Q1将会收到;
如果一条消息携带的路由键为TT.AA.BB,那么队列Q2将会收到;
当一个队列的绑定键为 “#”(井号) 的时候,这个队列将会无视消息的路由键,接收所有的消息。
当 * (星号) 和 # (井号) 这两个特殊字符都未在绑定键中出现的时候,此时主题交换机就拥有的直连交换机的行为。
如果只有 # ,它就实现了扇形交换机的功能。
所以主题交换机也就实现了扇形交换机的功能,和直连交换机的功能
3.交换机与队列特性设置(了解)

Exchange、Queue属性 durability
durability默认是durable(持久化),durability 属性用于定义队列或者交换机是否是持久化的。
当一个队列或者交换机被声明为持久化的时候,它们的元数据会被存储到磁盘上,这样即使在 RabbitMQ 服务器重启后,这些队列或者交换机的定义仍然存在。

持久化的队列和交换机可以确保消息的持久化,即使 RabbitMQ 服务器重启或者崩溃,消息也不会丢失。当消息被发送到持久化的队列或者交换机时,它们会被写入磁盘,以确保消息的持久性。

需要注意的是,仅仅将队列或者交换机声明为持久化是不够的,消息本身也必须被标记为持久化,才能确保消息的持久性。这可以通过在消息的属性中设置 delivery_mode 为 2 来实现。

总之, durability 属性在 RabbitMQ 中用于确保队列和交换机的持久化,以及消息的持久性,从而提高消息传递的可靠性。
Exchange、Queue类型 delete
在 RabbitMQ 中, auto delete 属性用于定义队列或交换机是否在没有消费者或绑定时自动删除。

当一个队列或交换机被声明为 auto delete 属性为 true 时,当没有消费者与该队列关联或者没有绑定到该交换机的队列时,它们会自动被删除。

这个属性通常用于临时队列或者临时交换机的场景。临时队列或交换机是在没有消费者或者绑定时自动创建的,用于处理一些临时性的任务或者临时的消息传递。
需要注意的是,如果一个持久化的队列或交换机被声明为 auto delete 属性为 true,那么它们在没有消费者或绑定时也会被自动删除,但它们的定义会在 RabbitMQ 服务器重启后重新创建。

总之, auto delete 属性在 RabbitMQ 中用于定义队列或交换机是否在没有消费者或绑定时自动删除,适用于临时队列或交换机的场景。
Exchange属性Internal
Internal的意思是内部的意思,在交换机这里设置为“Yes”之后,表示当前Exchange是RabbitMQ内部使用,用户所创建的Queue不会消费该类型交换机下的消息,既然是为了RabbitMQ系统所用,作为用户,我们就没有必要创建该类型的Exchange,当然默认也是选择No.

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

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

相关文章

Github 2024-04-10 开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目2JavaScript项目1Shell项目1Go项目1非开发语言项目1免费API集合 创建周期:2900 天开发语言:Python协议类型:MIT L…

RabbitMQ如何保证消息的幂等性???

在RabbitMQ中,保证消费者的幂等性主要依赖于业务设计和实现,而非RabbitMQ本身提供的一种直接功能。 在基于Spring Boot整合RabbitMQ的场景下,要保证消费者的幂等性,通常需要结合业务逻辑设计以及额外的技术手段来实现。以下是一个…

Elasticsearch 悬挂索引分析和自己的一点见解

在 Elasticsearch 的实战中,悬挂索引是一个既常见又容易引起困扰的概念。 今天,我将分享一次处理集群状态为RED,原因为DANGLING_INDEX_IMPORTED 的实战经验,深入探讨悬挂索引的定义、产生原因、管理方法,以及如何有效…

网关之王:Gateway基本配置技术分享

一、网关的基本概念和功能,以及其在网络中的作用。 网关是指一个网络中从一个协议簇(如TCP/IP)的网络末端,连接到另一个协议簇(如IPX/SPX)的网络的节点。它是网络通信的必要组件,主要用于将同一…

[Linux - C语言] 自主Shell

[Linux - C语言] 自主Shell [Linux - C语言] 自主Shell逻辑策划 main()打印命令行 void MakeCommandLineAndPrint()用户名 USER主机名 HOSTNAME当前目录 PWDSkipPath 切割目录打印命令行 获取用户字符串 int GetUserCommand()检查重定向 void CheckRedir()切割字符 void SplitC…

Rust - 数据类型

Rust 是静态编译语言,在编译时必须知道所有变量的类型。 基于使用的值,编译器通常能推断出它的具体类型,但如果可能的类型比较多,例如把String转换为整数的parse方法,就必须添加类型的标注,否则编译会报错…

JVM字节码与类的加载——类的加载过程详解

文章目录 1、概述2、加载(Loading)阶段2.1、加载完成的操作2.2、二进制流的获取方式2.3、类模型与Class实例的位置2.4、数组类的加载 3、链接(Linking)阶段3.1、链接阶段之验证(Verification)3.1.1、格式检查3.1.2、字节码的语义检查3.1.3、字节码验证3.1.4、符号引用验证 3.2、…

Harmony鸿蒙南向驱动开发-I3C

I3C(Improved Inter Integrated Circuit)总线是由MIPI Alliance开发的一种简单、低成本的双向二线制同步串行总线。 I3C是两线双向串行总线,针对多个传感器从设备进行了优化,并且一次只能由一个I3C主设备控制。相比于I2C&#xf…

langchain LCEL,prompt模块,outputparse输出模块

目录 基本代码 prompt模块 prompt模版控制长度 outputparse格式化输出 LangChain表达式语言,或者LCEL,是一种声明式的方式,可以轻松地将链条组合在一起 langchian 可以使用 通义千问,我们用通义千问,用法也要申请…

Stream流中方法详解

中间方法和终结方法 以下传入参数均表示lambda表达式中的参数 forEach():遍历集合,对流中的每个元素执行指定的操作 ArrayList<String> list new ArrayList<>(Arrays.asList("a","b","c","d")); list.stream().forEac…

基于ros的相机内参标定过程

基于ros的相机内参标定过程 1. 安装还对应相机的驱动2. 启动相机节点发布主题3. 下载camera_calibartion4. 将红框的文件夹复制在自己的工作空间里边&#xff0c;编译5. 标定完成以后&#xff0c;生成内参参数文件camera.yaml。将文件放在对应的路径下&#xff0c;修改config文…

ArcGIS Server 10发布要素服务时遇到的数据库注册问题总结(一)

工作环境&#xff1a; Windows 7 64 位旗舰版 ArcGIS Server 10.1 ArcGIS Desktop 10.1 IIS 7.0 开始的时候以为10.1发布要素服务和10.0一样&#xff0c;需要安装ArcSDE&#xff0c;后来查阅资料发现不需要&#xff0c;数据库直连方式就可以了。 首先我来说一下发布要素服…

stm32开发之threadx+netxduo(tcp 服务端使用记录)

前言 本篇需要用到threadx之动态内存的实现记录 里面的动态内存分配管理代码.开发环境使用的stm32cubemxclion组合芯片使用的是stm32f407zgt6,网口使用的是lan8720&#xff0c;使用cubemx提供的lan8742也可以驱动&#xff0c;注意实际的网口与芯片的引脚 示例代码 tcp 服务端…

关于可视化大屏适配

一、目前市场上适配方案有两种&#xff1b; vw、vh方案&#xff1a; 原理&#xff1a;按照设计稿的尺寸&#xff0c;将px按比例计算转为vw和vh&#xff1b; 优点&#xff1a;不会存在失真情况、可以动态计算图表的宽高&#xff0c;字体等&#xff0c;灵活性较高&#xff0c;…

国内SSL证书应用情况如何?

随着互联网的快速发展&#xff0c;越来越多的网站开始意识到数据安全的重要性&#xff0c;并开始使用SSL证书来保护网站和用户的数据安全。在国内&#xff0c;SSL证书的应用也逐渐得到推广和普及。本文将介绍国内SSL证书的应用情况。 首先&#xff0c;国内许多大型电商平台和金…

Excel文本内容抽取工具[Python]

#创作灵感# 一堆Excel文件&#xff0c;每个打开看太累了。写个脚本直接显示里面的内容多好。最好这些内容可以直接复制到剪切板&#xff0c;方便以后编辑修改。只需要将文件拖动到全屏置顶的文本框内&#xff0c;就能弹出Excel里的内容。支持一次选取多个文件。 开干&#xff…

计算机视觉——引导APSF和梯度自适应卷积增强夜间雾霾图像的可见性算法与模型部署(C++/python)

摘要 在夜间雾霾场景中&#xff0c;可见性经常受到低光照、强烈光晕、光散射以及多色光源等多种因素的影响而降低。现有的夜间除雾方法常常难以处理光晕或低光照条件&#xff0c;导致视觉效果过暗或光晕效应无法被有效抑制。本文通过抑制光晕和增强低光区域来提升单张夜间雾霾…

N1922A是德科技N1922A功率传感器

181/2461/8938产品概述&#xff1a; N192XA 传感器是首款通过将直流参考源和开关电路集成到功率传感器中来提供内部调零和校准的传感器。此功能消除了与使用外部校准源相关的多个连接&#xff0c;从而最大限度地减少了连接器磨损、测试时间和测量不确定性。 连接到 DUT 时进行…

从零开始精通RTSP之请求与响应详解1

概述 RTSP是一种基于文本的应用层协议&#xff0c;使用UTF-8编码&#xff0c;并通过TCP或UDP传输。它并不直接传输媒体数据&#xff0c;而是用于控制媒体数据的传输&#xff0c;比如&#xff1a;播放、暂停、快进等操作。RTSP客户端通过发送请求到服务器&#xff0c;服务器则响…