谷粒商城实战笔记-251-商城业务-消息队列-Exchange类型

news2024/11/24 2:29:50

文章目录

  • 一,Exchange
  • 二,Exchange的四种类型
    • 1,direct
    • 2,fanout
    • 3,topic
  • 三,实操
    • 1,创建一个exchange
    • 2,创建一个queue
    • 3,将queue绑定到exchange

一,Exchange

在这里插入图片描述
AMQP 中消息的路由过程和 Java 开发者熟悉的 JMS 存在一些差别,AMQP 中增加了 Exchange 和 Binding 的角色。生产者把消息发布到 Exchange 上,消息最终到达队列并被消费者接收,而 Binding 决定交换器的消息应该发送到那个队列。

二,Exchange的四种类型

Exchange 分发消息时根据类型的不同的分发策略有区别,目前共四种类型:

  • direct
  • fanout
  • topic
  • headers。
    Headers 匹配 AMQP 消息的 header 而不是路由键,headers 交换器完全一致,但性能差很多,所以直接用另外三种类型。

1,direct

在这里插入图片描述
Direct Exchange(直连交换机)是最简单的交换机类型,它会将消息路由到与routing key完全匹配的队列上。

也就是说,如果一个队列绑定到交换机上的binding key为“dog”,那么:

  • 只有当消息的routing key也为“dog”时,该消息才会被投递到这个队列中。
  • 如果消息的routing key为“dog.puppy”或者“dog.guard”,则不会被投递给这个队列。

在图中可以看到,当消息的routing key等于KEY时,交换机会将消息发送到对应的队列中。如果一个队列绑定了交换机,并且要求路由键为"dog",那么只有当routing key标记为"dog"的消息才会被转发到这个队列,而不会转发"dog.puppy"或"dog.guard"等其他不完全匹配的消息。

2,fanout

在这里插入图片描述

图中展示了Fanout Exchange的工作原理,它将所有发送到该交换机的消息都转发到所有绑定的队列上去。

Fanout Exchange(扇出交换机)是 RabbitMQ 提供的一种非常简单且高效的交换机类型。它的基本思想是将接收到的所有消息广播给与之关联的所有队列,类似于子网内的广播通信方式。在这种模式下,不需要考虑任何路由键或者绑定规则,只要一个队列与 fanout 交换机进行了绑定,那么就可以接收到交换机转发过来的所有消息。

在图中,我们可以看到一个 fanout 交换机连接着三个队列。无论消息的 routing_key 是什么,只要消息被发送到了这个交换机,它就会被转发到所有的队列中去。这就像在一个局域网内进行广播一样,每台主机都会接收到一份复制的消息。

由于 fanout 交换机不需要执行任何复杂的路由逻辑,因此它是所有交换机类型中最快速的。如果你的应用场景只需要将消息广播给多个消费者,那么使用 fanout 交换机将会是一个很好的选择。

3,topic

在这里插入图片描述
这张图片展示的是一个主题交换机(Topic Exchange),它是RabbitMQ中一种常用的交换机类型。主题交换机通过模式匹配来决定将消息路由到哪个队列。

在图片中,我们能看到四个队列(Queues)分别绑定了不同的模式(Binding Key)。这些模式都是由单词组成的,单词之间用点号"."分隔。同时,主题交换机也支持两种通配符:

  • #:匹配零个或多个单词;
  • *:匹配一个单词。

例如,队列1绑定了"usa.#“,这意味着它将接收所有以"usa.“开头的消息;队列2绑定了”.news”,表示它将接收所有包含"news"作为最后一个单词的消息;队列3绑定了"#.weather",意味着它将接收所有以".weather"结尾的消息;队列4绑定了"europe.#",因此它将接收所有以"europe."开头的消息。

接下来,我们看几个例子:

  1. 当一条消息的路由键(Routing Key)为"usa.news"时:

    • 队列1(绑定键为"usa.#")可以接受,因为"usa.news"满足以"usa."开头;
    • 队列2(绑定键为".news")也可以接受,因为它包含了"news"作为最后一个单词;
    • 队列3(绑定键为"#.weather")不能接受,因为"usa.news"没有以".weather"结尾;
    • 队列4(绑定键为"europe.#")也不能接受,因为"usa.news"并没有以"europe."开头。
  2. 当一条消息的路由键(Routing Key)为"europe.weather"时:

    • 队列1(绑定键为"usa.#")不能接受,因为"europe.weather"并不以"usa."开头;
    • 队列2(绑定键为".news")可以接受,因为它包含了"weather"作为最后一个单词;
    • 队列3(绑定键为"#.weather")也能接受,因为"europe.weather"是以".weather"结尾的;
    • 队列4(绑定键为"europe.#")可以接受,因为"europe.weather"以"europe."开头。

总的来说,主题交换机允许你定义一系列的过滤规则,使得消息能够更灵活地被路由到合适的队列。这对于处理具有相似性的不同消息非常有用,比如上述例子中的美国新闻和欧洲天气预报。

三,实操

1,创建一个exchange

在管理界面上,创建我们的第一个exchange

在这里插入图片描述

2,创建一个queue

在这里插入图片描述

3,将queue绑定到exchange

在这里插入图片描述
把创建的queue绑定到exchange。

在这里插入图片描述
结果是:

在这里插入图片描述

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

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

相关文章

二叉树的链式存储(代码实现)

二叉树的链式存储 用链表实现&#xff0c;基于完全二叉树规律来构建树&#xff0c;按照完全二叉树的编号方法&#xff0c;从上到下&#xff0c;从左到右。一共n个节点。 第i个节点&#xff1a; 左子节点编号&#xff1a;2*i &#xff08;2*i<n&#xff09; 右子节点编号&…

【C++题解】1146. 求S的值

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1146. 求S的值 类型&#xff1a;递归基础、函数 题目描述&#xff1a; 求 S12471116…的值刚好大于等于 5000 时 S 的值。 输入&#xff1a; 无。 输出&#xff1a; 一行&…

写作手三天速成攻略【数学建模国赛赛前必看内容】

第一天&#xff1a;准备论文模板&#xff0c;学习各类基础画图技巧 1、论文模板 对于写作手&#xff0c;除了内容的连贯性&#xff0c;排版是非常重要的&#xff0c;可以说有一个好的排版&#xff0c;只要论文是完整的&#xff0c;有结果的&#xff0c;基本上保底有省奖&#…

CSP-CCF 201412-2 Z字形扫描

目录 一、问题描述 二、解答 三、总结 一、问题描述 在图像编码的算法中&#xff0c;需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个nn的矩阵&#xff0c;Z字形扫描的过程如下图所示&#xff1a; 对于下面的44的矩阵&#xff0c;   1 5 3 9   3 7 5 6  …

玩客云刷机armbian后docker启动不起来,提示bpf_prog_query(BPF_CGROUP_DEVICE) failed

/ ___| ( _ )/ |___ \ \___ \ / _ \| | __) |___) | (_) | |/ __/ |____/ \___/|_|_____|Welcome to Armbian 20.12 Bullseye with Linux 5.10.61-aml-s812Linux aml-s812 5.10.61-aml-s812 #20.12 SMP Thu Sep 2 20:11:09 CST 2021 armv7l GNU/Linux 玩客云刷机armbian后dock…

工业气膜仓储:高效、灵活的仓储解决方案—轻空间

在现代工业生产中&#xff0c;仓储设施的选择至关重要。作为一种新型的仓储解决方案&#xff0c;工业气膜仓储凭借其高效、灵活、经济的优势&#xff0c;正在逐渐取代传统建筑仓库&#xff0c;成为各类企业的理想选择。 一、快速搭建&#xff0c;满足多种需求 工业气膜仓储采用…

24年浙江事业单位考试报名流程保姆级教程

2024年浙江事业单位考试报名马上就要开始了&#xff0c;有想要参加考试报名的同学可以提前了解一下报名流程&#xff0c;以及报名照要求。 一、考试时间安排&#xff1a; 报名时间&#xff1a;8月27日9:00 9月2日16:00 资格审核时间&#xff1a;8月27日—9月3日 网上缴费时…

软件开发商业模式的思考:软件最大的竞争力就是低价格

很多程序员在工作的时候&#xff0c;都会有机会碰到做外包项目的机会&#xff0c;还有很多的专业网站&#xff0c;接项目&#xff0c;在这种外包开发中&#xff0c;经常会按照评估的开发时间和程序员的薪酬来定价。 前几年有朋友介绍过一个线下实体店经营者&#xff0c;想做一…

TF SD卡突然容量变小或者名字改变并且电脑就算格式化也恢复不了原状态或者干脆windows系统都格式化失败的解决办法

我自己是因为在使用canmv系统驱动k210时把系统镜像下载到了sd tf卡中导致tf 卡系统发生改变&#xff0c;32g变16mb而且名字也变成boot 这是因为你下载的系统镜像把原来的fat32或者其他常用sd tf卡系统代替了&#xff0c;导致电脑识别时&#xff0c;你现在的sd卡系统把总大小减…

【Redis】Redis 缓存应用、淘汰机制—(四)

目录 一、缓存应用二、淘汰机制三、LRU 算法四、LFU 算法 一、缓存应用 一个系统中不同层面数据访问速度不一样&#xff0c;以计算机为例&#xff0c;CPU、内存和磁盘这三层的访问速度从几十 ns 到 100ns&#xff0c;再到几 ms&#xff0c;性能的差异很大&#xff0c;如果每次…

【视频讲解】主成分分析原理与水果成熟数据实例:Python中PCA-LDA 与卷积神经网络CNN...

全文链接&#xff1a;https://tecdat.cn/?p37450 分析师&#xff1a;Shixian Ding 主成分分析&#xff08;PCA&#xff09;作为数据科学中用于可视化和降维的重要工具&#xff0c;在处理具有大量特征的数据集时非常有用。就像我们难以找到时间阅读一本 1000 页的书&#xff0…

jpg免费转换成pdf?jpg和pdf谁更好?图片转pdf的优势总结!

jpg免费转换成pdf&#xff1f;jpg和pdf谁更好&#xff1f;我们经常需要将JPG图片转换为PDF文档。无论是个人照片管理、证件扫描&#xff0c;还是商业和行政领域的文档整理、合同协议、电子邮件附件&#xff0c;以及教育领域的课件制作和论文报告&#xff0c;都可以通过JPG到PDF…

JVM - 1.类加载子系统

1.类加载子系统 1.作用 1.负责从文件系统或网络中加载字节码(.class)文件&#xff0c;即将物理磁盘上的字节码文件加载到内存中&#xff0c;生成供程序使用的类对象 2.字节码文件要求在文件开头有特定的文件标识(CA FE BA BE)3.类加载器(ClassLoader)只负责字节码文件的加载&am…

VS项目写完执行exe隐藏调试用的黑窗口(控制台)

在vs创建完项目&#xff0c;我们只希望运行显示界面&#xff0c;不显示控制台&#xff0c;控制台就是这样的黑色窗口&#xff0c;他可以在我们调试的时候打印一些东西来判断辅助编程。 1、首先修改为窗口模式 2、在你的main文件里最上面加入一行代码&#xff1a; #pragma comme…

android打印编码转换-SAAS本地化及未来之窗行业应用跨平台架构

一、打印转码 1.图片转打印 2.文字转打印 二、代码 package CyberWinPHP.Cyber_Plus;import java.util.Hashtable;import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.WriterException; import com.google.zxing.co…

【文档合集】软件类常用文档整理大全,软件工程,软件项目管理,技术标书方案,模

目的&#xff1a;规范系统开发流程&#xff0c;提高系统开发效率。 立项申请需求分析方案设计方案评审开发调整测试阶段系统培训试运行测试验收投入使用 所有文档过去进主页获取。 获取方式&#xff1a;本文末个人名片直接获取。 软件资料清单列表部分文档清单&#xff1a;工作…

一款免费轻量的CAD看图软件

这款免费CAD看图软件&#xff0c;旨在为用户提供快速查看和处理CAD图纸的能力。该软件以其轻量化、功能全面、操作简便等特点受到用户的欢迎。支持多种CAD文件的快速查看&#xff0c;包括但不限于DWG、DXF等格式&#xff0c;而且不需要安装大型CAD软件即可使用。 主要特点包括…

齐护语音识别V2.1模块可自定义免编程学习唤醒词指令词自带IO实现人机对话 Arduino C编程图形化Mixly Scratch编程

齐护离线语音识别模块可免编程自定义学习唤醒词及识别词 固件V2.1 齐护语音识别V2.1模块可自定义免编程学习唤醒词指令词自带IO实现人机对话 Arduino C编程图形化Mixly Scratch编程 此固件&#xff08;程序/功能&#xff09;为自学习V2.1版本&#xff0c;在基础版本的上去除【变…

HashMap-leetcode总结

为什么用Hashmap? 将两种属性&#xff08;key,value&#xff09;具有某种联系&#xff0c;需要保存下来 随时读取是否存在且通过一方获取它对应值 数据结构 一数值value经过hashcode()计算出key&#xff0c;key对应数组位置建立链表 HashMap常用方法 1、HashMap的初始化 Hash…

4820道西医综合真题西医真题ACCESS\EXCEL数据库

本题库内容源自某出版物《西医综合真题考点还原与答案解析》&#xff0c;包含4千多道真题。这个数据库包含3个表&#xff0c;一个是分类表&#xff08;SECTION_BEAN&#xff09;&#xff0c;一个是题库主表&#xff08;QUESTION_INFO_BEAN&#xff09;&#xff0c;一个是选项表…