《RabbitMQ篇》基本概念介绍

news2024/11/23 15:18:57

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.coloradmin.cn/o/2182073.html

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

相关文章

鸿蒙NEXT开发-ArkTS(基于最新api12稳定版)

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

Spring IoC笔记

目录 1.什么是 IoC? 2.IoC类注解(五大注解) 2.1那为什么要这么多类注解? 2.2五大注解是不是可以混用? 2.3程序被spring管理的条件是? 3.bean对象 3.1Bean 命名约定 3.2获取bean对象 4.⽅法注解 B…

《应急通信产业发展研究报告》蓝皮书解读

近日,中国信通院发布了《应急通信产业发展研究报告》蓝皮书,该报告是对中国应急通信产业现状、发展趋势及其政策环境的综合分析,旨在为行业发展提供参考与指导。以下是小编对该蓝皮书的一些内容解读: 1.应急通信的重要性 应急通信…

2.点位管理|前后端如何交互——帝可得后台管理系统

目录 前言点位管理菜单模块1.需求说明2.库表设计3.生成基础代码0 .使用若依代码生成器最终目标1.创建点位管理2.添加数据字典3.配置代码生成信息4.下载代码并导入项目 4.优化菜单——点位管理1.优化区域管理2.增加点位数3. 合作商4.区域管理中添加查看详情功能5.合作商添加点位…

【拥抱AIGC】通义灵码扩展管理

通义灵码提供了扩展管理,支持自定义指令,满足企业编码场景的扩展诉求。 适用版本 企业标准版、企业专属版 通义灵码管理员、组织内全局管理员(专属版)在通义灵码控制台-扩展管理中,进行自定义指令的管理、查看自定义…

解锁数据宝藏:AI驱动搜索工具,让非结构化数据“说话

哈哈,说起这个 AI 搜索演示啊,那可真是个有意思的话题!非结构化数据,这家伙虽然难搞,但价值却是杠杠的。今天呢,咱就好好聊聊怎么借助 Fivetran 和 Milvus,快速搭建一个 AI 驱动的搜索工具,让企业能从那些乱七八糟的数据里淘到金子! 一、非结构化数据的挑战与机遇 首…

PCL 点云条件滤波

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 条件定义与滤波 2.1.2 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新&#…

Python从入门到高手4.1节-掌握条件控制语句

目录 4.1.1 理解条件控制 4.1.2 if, elif, else 4.1.3 条件表达式 4.1.4 条件控制可以嵌套 4.1.5 if语句的三元运算 4.1.6 国庆节快乐 4.1.1 理解条件控制 在日常生活中,我们常喜欢说如果, "如果怎么样,那么就会怎么样"。"如果&qu…

240930_CycleGAN循环生成对抗网络

240930_CycleGAN循环生成对抗网络 CycleGAN,也算是笔者记录GAN生成对抗网络的第四篇,前三篇可以跳转 240925-GAN生成对抗网络-CSDN博客 240929-DCGAN生成漫画头像-CSDN博客 240929-CGAN条件生成对抗网络-CSDN博客 在第三篇中,我们采用了p…

【Lazy ORM +Netty+DB开发一个内网渗透工具 wu-lazy-cloud-network(1.2.8-JDK17-SNAPSHOT)】

【Lazy ORM NettyDB开发一个内网渗透工具 wu-lazy-cloud-network(1.2.8-JDK17-SNAPSHO)】 环境 Java 17Spring Boot 3.xLazy ORMNettyMysql、H2 更新日志 版本1.2.8-JDK17-SNAPSHOT [change] 原《内网穿透》更改为服务端渗透客户端 [change] 新增服务…

Unity 代码裁剪(Strip Engine Code)

文章目录 0.IL2CPP 打包运行闪退问题1.什么是代码裁剪2.为什么要使用代码裁剪3.代码裁剪设置与级别4.强制保留代码4.1 使用[Preserve]标签4.2 使用Link.xml文件 5.Strip中遇到的问题及解决方法6.注意事项 0.IL2CPP 打包运行闪退问题 Google Play要求从2019年8月1日起apk必须支…

Spring系列 AOP实现过程

文章目录 实现原理EnableAspectJAutoProxyAnnotationAwareAspectJAutoProxyCreator 代理创建过程wrapIfNecessarygetAdvicesAndAdvisorsForBeanfindCandidateAdvisorsfindAdvisorsThatCanApply createProxy AspectJ注解处理代理调用过程 实现原理 本文源码基于spring-aop-5.3.…

Arweave的经济学模型

一、存储成本和挖矿奖励 1.1 永久数据存储的成本 由于 Arweave 的核心功能是为其用户提供永久存储,因此必须定义这种存储的定价机制。 作为计算永久存储一份数据的成本的前提,我们必须首先定义单个时间段的数据存储成本: 自数字数据存储技…

算法-数组笔记

二分搜索 . - 力扣(LeetCode) 使用场景 前提是数组为有序数组,同时题目还强调数组中无重复元素。 因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大…

【Ubuntu】git

文章目录 1.配置SSH key2. 基础知识操作命令1分支branch 如果对git命令使用不熟悉,推荐一个非常棒的git在线练习工具 Learn Git Branching。 https://m.runoob.com/git/git-basic-operations.html 1.配置SSH key ssh-keygen -t rsa -C "YOUR EMAIL"完成…

深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制

我的主页:2的n次方_ 1. JVM 内存区域划分 程序计数器(空间比较小)。保存了下一条要执行的指令的地址(指向元数据区指令的地址)堆。JVM 最大的空间,new 出来的对象都在堆上栈。函数中的局部变量&#x…

Linux相关概念和重要知识点(10)(进程优先级、进程切换)

1.进程优先级 (1)为什么要有进程优先级? 优先级的本质是获得某种资源的先后顺序,如排队买票这件事上排队的本质是在确认优先级,售票窗口就是要竞争的资源。为什么要有优先级?本质就是目标资源比较少&…

VS2022 Git功能的使用

前言 博主最近在学校接触了团队开发的概念,最近也系统性学习了c语言,也是从0开始摸索,一开始博主在推送代码的时候使用的是git bash 后来发现VS2022有Git相关功能,但是博主在网上没有找到通俗易懂适合小白的配置教程,…

HarmonyOS应用六之应用程序进阶一

目录: 1、UIAbility的冷启动和UIAbility热启动2、静态资源和动态资源的访问3、页面跳转3.1、页面返回跳转 4、HAR的ArkUI组件、接口、资源,供其他应用或当前应用的其他模块引用4.1、导出HAR的ArkUI组件4.2、引用HAR的ArkUI组件 5、循环渲染6、状态管理最…

【生成模型】学习笔记

生成模型 生成模型概述(通俗解释) 生成的核心是生成抽象化的内容,利用已有的内容生成没有的/现实未发生的内容。这个过程类似于人类发挥想象力的过程。 生成模型的应用场景非常广泛,可以应用于艺术表达,如画的生成、…