《RabbitMQ篇》基本概念介绍

MQ功能

  1. 解耦
    MQ允许不同系统或组件之间松散耦合。发送者和接收者不需要直接连接,从而提高了系统的灵活性和可维护性。
  2. 异步处理
    使用MQ可以实现异步消息传递,发送者可以将消息放入队列后立即返回,不必等待接收者处理。这提高了系统的响应速度和吞吐量。
  3. 流量控制
    消息队列可以帮助平衡生产者和消费者之间的负载。当生产者发送消息的速度快于消费者处理的速度时,消息会在队列中积压,从而防止系统过载。
  4. 消息持久性
    许多MQ系统支持将消息持久化到磁盘,这确保了即使在系统崩溃的情况下,也能保证消息不会丢失。
  5. 延迟处理
    MQ可以设置延迟队列,使消息在特定时间后才被消费。这对于某些需要延时处理的场景非常有用。
  6. 可靠性
    通过消息确认机制,接收者可以确认已成功处理消息,未确认的消息可以重新发送。这增加了系统的可靠性。
  7. 分布式系统支持
    MQ非常适合分布式系统中的服务间通信,能够有效管理不同服务之间的消息传递。
  8. 事务支持
    一些消息队列支持事务,可以确保一组操作要么全部成功,要么全部失败,这对于确保数据一致性很重要。

基本概念

生产者

产生数据发送消息的程序是生产者

交换机

交换机是rabbitmq非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中,交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定。

队列

队列是rabbitmq内部使用的一种数据结构,尽管消息流经rabbtmq和应用程序,但它们只能存储在队列中,队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据,这就是我们使用队列的方式

消费者

消费与接收具有相似的含义,消费者大多时候是一个等待接收消息的程序。请注意生产者,消费

者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。

工作过程

Broker:接收和分发消息的应用,RabbitMQ Server 就是 Message Broker

Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个 vhost,每个用户在自己的 vhost 创建 exchange/queue 等

Connection:publisher/consumer 和 broker 之间的 TCP 连接

Channel:如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP Connection 的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个 thread 创建单独的 channel 进行通讯,AMQP method 包含了 channel id 帮助客户端和 message broker 识别 channel,所以 channel 之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销

Exchange:message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发 消息到 queue 中去。常用的类型有:direct (point-to-point),topic (publish-subscribe) and fanout (multicast)

Queue:消息最终被送到这里等待 consumer 取走

Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据

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

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

相关文章

RabbitMQ入门3—virtual host参数详解

在 RabbitMQ 中,创建 Virtual Host 时会涉及到一些参数配置,比如 tags 和 Default Queue Type。下面是对这两个参数的详细解释: 1. Tags Tags 是 Virtual Host 的标记,用来为 Virtual Host 添加元数据,帮助你管理和组…

牛客周赛 Round 62(期望、DFS、主席树、DP、逆推DP)

文章目录 牛客周赛 Round 62(期望、DFS、主席树、DP、逆推DP)A. 小红的字符移动B. 小红的数轴移动C. 小红的圆移动D. 小红的树上移动 (期望、DFS)E. F. 小红的中位数查询(主席树)G. 小红的数轴移动(二)&…

Windows下Jenkins控制台中文乱码

问题描述 问题情况如下图: 环境信息 Windows 11 家庭中文版java 21.0.4 2024-07-16 LTSJenkins 2.452.3 解决方法 增加系统JAVA_TOOL_OPTIONS,并设置值为-Dfile.encodingGBK。 打开设置方法:桌面上右键点击“此电脑”图标,选…

mysql设置表的某一个字段每天定时清零

推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…

算法笔记(十三)——BFS 解决最短路问题

文章目录 迷宫中离入口最近的出口最小基因变化单词接龙为高尔夫比赛砍树 BFS 解决最短路问题 BFS(广度优先搜索) 是解决最短路径问题的一种常见算法。在这种情况下,我们通常使用BFS来查找从一个起始点到目标点的最短路径。 迷宫中离入口最近的出口 题目:…

Android SystemUI组件(11)SystemUIVisibility解读

该系列文章总纲链接:专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明: 说明:本章节持续迭代之前章节思维导图,主要关注左侧最上方SystemUiVisibility解读部分即可。 本章节主要讲解SystemUiVisibility的概念及其相…

数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(一).创建基础表

一. 使用工具和命令 1.1 使用的工具 Navicat Premium 17 :“Navicat”是一套可创建多个连接的数据库管理工具。 MySQL版本8.0.39 。 1.2 使用的命令 Navicat中使用的命令 命令命令解释SHOW DATABASES;展示所有的数据库CREATE DATABASE 数据库名称; 创…

thinkphp 学习记录

1、PHP配置 (点开链接后,往下拉,找到PHP8.2.2版本,下载的是ZIP格式,解压即用) PHP For Windows: Binaries and sources Releases (这里是下载地址) 我解压的地址是:D:\…

1、如何查看电脑已经连接上的wifi的密码?

在电脑桌面右下角的如下位置:双击打开查看当前连接上的wifi的名字:ZTE-kfdGYX-5G 按一下键盘上的win R 键, 输入【cmd】 然后,按一下【回车】。 输入netsh wlan show profile ”wifi名称” keyclear : 输入完成后,按一下回车&…

Codeforces Round 316 (Div. 2) D题 Tree Requests(二分,dfs,在线,前缀异或)

题目链接 Codeforces Round 316 (Div. 2) D题 Tree Requests 思路 将 26 26 26个字母全部当作一个二进制数。 将每个深度的结点按照dfs序放到一个vector里,同时记录每个vector对应的前缀异或。 对于每一个询问x,只需在给定深度里找到 ≥ \ge ≥L[x]…

中断系统的原理

一、介绍 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的。中断是指‌CPU在正常运行程序时,由于内部或外部事件的发生,导致CPU中断当前运行的程序,转而去执行其他程序的过程。‌ 中断可以是硬件产生的,也可以是…

安全运营中心 (SOC) 团队对其安全工具感到失望

Vectra AI 表示,安全运营中心 (SOC) 从业人员认为,由于太多孤立的工具和缺乏准确的攻击信号,他们在检测和确定真实威胁的优先级方面正在失败。 人们对供应商的不信任感日益加深,认为供应商的工具在发现真正的攻击方面起的阻碍作用…

OpenCV视频I/O(16)视频写入类VideoWriter之获取当前使用的视频编解码器后端的名称函数getBackendName()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 getBackendName() 是一个成员函数,用于获取当前使用的视频编解码器后端的名称。这个函数可以帮助开发者了解正在使用的编解码器是什么…

金纳米星“融入”水凝胶,原位生长的奥秘,应用前景的探索

大家好!今天来了解一项在三维水凝胶表面生长金纳米星的研究——《Growing Gold Nanostars on 3D Hydrogel Surfaces》发表于《Chemistry of Materials》。水凝胶在生物医学等诸多领域有着重要应用,而金纳米星具有独特的光学性质。这项研究通过原位合成的…

【Linux】线程与线程安全知识总结

向外张望的人在做梦, 向内审视的人才是清醒的。 --- 荣格 --- 我最近复习了线程安全这部分知识,将不明白的问题总结出来,并通过AI进行问答帮助我进行学习巩固。本人能力有限 ,可能有些内容不准确,望各位大佬海涵&am…

Leetcode 3312. Sorted GCD Pair Queries

Leetcode 3312. Sorted GCD Pair Queries 1. 解题思路2. 代码实现 题目链接:3312. Sorted GCD Pair Queries 1. 解题思路 这一题的话坦率来说没有搞定,后来是找的大佬的代码抄了一下…… 整体来说这道题思路上还是比较暴力的,还是一个二重…

【前端开发入门】css快速入门

目录 引言一、css盒模型1. 盒模型概念2. 盒模型案例 二、css编写1. html文件内部编写1.1 标签style属性编写1.2 css选择器关联1.2.1 id选择器1.2.2 class选择器1.2.3 标签选择器1.2.4 css选择器作用域1.2.5 其他选择器1.2.6 各css选择器优先级 2. 单独维护css文件2.1 创建css文…

伙伴算法的概念

伙伴算法 (Buddy System) 是一种内存分配算法,用于动态分配和释放内存块。它通过将内存空间划分成大小为 2 的幂次的块,并采用特殊的合并策略来提高内存利用率和减少内存碎片。 核心思想: 伙伴算法的核心思想是将内存划分为大小为 2 k 2^k 2k 字节的块…

macOS .bash_profile配置文件优化记录

文章目录 说明原文件内容优化思路优化操作测试验证1. 验证JAVA_HOME2. 验证MAVEN_HOME3. 验证MONGODB_HOME4. 验证CLASSPATH5. 验证PATH 说明 展示的代码中,关于具体的文件路径位置,请灵活修改为自己的真实文件目录! 原文件内容 从macOS C…

HDLBits中文版,标准参考答案 | 3.1.4 Karnaugh Map to Circuit | 卡诺图到电路

关注 望森FPGA 查看更多FPGA资讯 这是望森的第 11 期分享 作者 | 望森 来源 | 望森FPGA 目录 1 3 变量 2 4 变量 3 4 变量 4 4 变量 5 最小 SOP 和 POS 6 卡诺图 7 卡诺图 8 使用多路复用器实现的卡诺图 本文中的代码都能够正常运行,请放心食用&#x1f…