本章主要讨论RabbitMQ的架构模型,AMQP协议是什么,以及RabbitMQ和AMQP之间的关系,还会讨论消息从生产者发出和送达到消费者这一过程要经历哪些步骤。

RabbitMQ整体上是生产者与消费者模型,主要负责接收、存储、转发消息。

RabbitMQ的整体架构如图2-1所示。

图2-1 RabbitMQ整体模型架构

后面的章节开始对图中的组件进行详细介绍。


2.1 消息生产者-消息消费者-Broker

(1)Producer:生产者,负责创建并投递消息。

生产者创建消息,然后发布到RabbitMQ中。消息一般可以包含2个部分:消息体和标签(Label):

(A)消息体也可以称之为payload,在实际应用中,消息体一般是业务数据,比如JSON字符串。

(B)消息的标签(Label)用来描述消息的信息,包含交换器的名称和路由键。生产者把消息交给RabbitMQ,RabbitMQ之后会根据标签的内容把消息发送给消费者(Consumer)。

(2)Consumer:消费者,负责接收和处理消息。

消费者连接到RabbitMQ服务器并订阅指定的消息队列。消息队列中的消息只保留了消息的消息体(payload),因为在消息路由的过程中,消息的标签(Label)会被丢弃,存入到消息队列中的消息只有消息体,消费者并不知道消息的生产者是谁。

(3)Broker:消息中间件的服务节点。

一个RabbitMQ Broker可以简单地看作是一个RabbitMQ服务节点,一个RabbitMQ服务实例,一个RabbitMQ服务器。

图2-2展示了生产者将消息存入RabbitMQ Broker,以及消费者从RabbitMQ Broker中消费的整个流程。

图2-2 消息队列的运转过程

首先生产者将业务数据封装成消息并发送(AMQP协议里对应的命令为Basic.Publish)到Broker中。消费者订阅并接收消息(AMQP协议里对应的命令为Basic.Consume和Basic.Get),获得消息中原始的业务数据后开始加工。为了MQ的运行效率,处理业务数据的线程并不一定和接收消息的线程是同一个线程,消费者进程可以使用A线程去接收消息,存入到内存中(比如使用Java中的BlockingQueue),再使用B线程从内存中读取数据进行业务处理,实现解耦,以异步执行的方式提高整个应用的数据处理效率。

如果你觉的这篇文章对你有用,记得点赞收藏,以防找不到我哦~

RabbitMQ的架构模型相关推荐

  1. 【RabbitMQ】RabbitMQ架构模型

    目录 RabbitMQ架构模型 Producer:生产者 Consumer:消费方 Broker:服务节点 Queue队列: Exchange:交换器 --fanout广播 --topic主题 --d ...

  2. kafka 串讲:架构模型、角色功能梳理

    kafka 串讲:架构模型.角色功能梳理 kafka 的 what why how,先有一个粗略宏观的理解 rabbitmq.各种 mq 的技术选型.横向对比 首先,kafka 是一个消息中间件.我们 ...

  3. 浅谈Chatbot的架构模型和响应机制

    不知您是否已注意到:人工智能已经不再是少数科技公司的初级原型产品了.在许多服务类行业中,带有人工智能的聊天机器人(Chatbot)正在逐步取代人工客服,提供及时.周到.互动的服务.通过机器学习的相关技 ...

  4. ETSI MEC — 参考架构模型

    目录 文章目录 目录 ETSI MEC 参考架构模型 架构设计原则 分层架构 系统架构 CFS portal UE app User app LCM proxy OSS MEAO MEPM MEP V ...

  5. 4G EPS 的架构模型

    目录 文章目录 目录 前文列表 EPS 的架构 EPS 的架构模型 E-UTRAN UE eNodeB EPC MME(移动性管理) SGW(本地移动性锚点) PGW(业务锚点) HSS(用户认证及鉴 ...

  6. 【Android 逆向】ARM CPU 架构体系 ( ARM 处理器工作模式 | ARM 架构模型 )

    文章目录 一.ARM 处理器工作模式 二.ARM 架构模型 一.ARM 处理器工作模式 参考 [嵌入式开发]ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存 ...

  7. 重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源

    作者: OAM 项目负责人 导读:2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Op ...

  8. PowerDesigner 企业架构模型 ( EAM ) 说明

    一. 企业架构模型 说明 EnterpriseArchitecture Model(EAM),企业架构模型从业务层.应用层以及技术层的对企业的体系架构进行全方面的描述,包括业务流程.业务功能.系统.人 ...

  9. 浅析常用软件架构中的一定要理解的三种架构模型

    2019独角兽企业重金招聘Python工程师标准>>> 常用的软件架构模型可以归类为三种架构模型:3/N层架构."框架+插件"架构.地域分布式架构. 一.三种架构 ...

最新文章

  1. JGG | 肠道微生物研究助力穿山甲圈养保护
  2. OpenGL编程指南10:组合运动示例1—创建太阳系模型
  3. ACM MM 2021 | 面向多模态情绪识别的双流异质图递归神经网络
  4. C语言函数题-P字符串的比较
  5. 【机器学习】SVM基本线性可分与多分类
  6. STM32F407 CubeMx使用定时器测量信号频率 分辨率0.001Hz
  7. 字体方向 道路标注_自动驾驶环境感知的“见闻色”——3D点云标注
  8. 【代码笔记】iOS-performSelectorOnMainThread
  9. windows服务器性能监控工具、方法及关键指标
  10. WinXP/2000/2003下如何重装TCP/IP协议
  11. C++ msdn 离线版下载地址
  12. 福大软工1816 · 第四次作业 - 团队展示
  13. Windows-系统
  14. 使用MobileViT替换YOLOv5主干网络
  15. c语言51单片机湿度浇花器,基于51单片机的室内自动浇花系统的制作方法
  16. MongoDB、ElasticSearch、Redis、HBase这四种热门数据库的优缺点及应用场景
  17. Vim 复制 全部复制
  18. 详解 atoi 函数并模拟实现
  19. 汽车基础——专业词汇
  20. php 兼容火狐,HTML_总结CSS中火狐浏览器与IE浏览器的兼容代码,如何让你写的代码更兼容火狐 - phpStudy...

热门文章

  1. 面试笔记(网易-Java开发实习)
  2. 使用VC++通过QQ邮箱发邮件
  3. mac 10.13.5, texpad 1.7.40安装教程
  4. Unity3D 设置帧频及显示FPS
  5. ps流 转发_VAG.Node: GB28181 信令服务服务,支持PS流到RTMP流的转码和转发功能
  6. mts格式怎么转成mp4?知道这个方法就可以了
  7. echarts为什么用getElementsByClassName()方法显示不了图表
  8. golang的继承不是继承
  9. Android屏幕直播方案
  10. 运算符与基本数据类型int和string的方法汇总(二)