大家好,我是小T

今天咱们来介绍RabbitMQ的消息发送的原理 ^-^

RabbitMQ作为一款消息中间件,它的核心功能主要是消息的收发。消息收发的媒介是通过网络传输来实现的。

RabbitMQ最底层的技术原理,其实是网络通信协议及其实现模型。

1 AMQP协议及模型

AMQP,全拼为 “Advanced Message Queuing Protocol”,全称为 “高级消息队列协议”。目前,该协议最新版本是0-9-1

简单来说,AMQP 0-9-1 是一种消息传递协议

用一句话来描述该协议:它使得符合该协议的客户端应用程序能够与符合该协议的消息中间件代理(broker)进行通信

那么AMQP 0-9-1 模型又是什么呢?模型就是描述该协议如何工作的,即工作原理

用一句话来描述该模型:发布者发送message到exchange(exchange就像邮局或电子邮箱),exchange再通过bindings规则分发message到queue,然后broker再传递message给订阅了queue的消费者,或者消费者从需要的queue中获取/拉取message

如果感觉文字有些拗口,直接看下图

在具体使用或开发中,针对于模型中描述的message、exchange、bindings、queue、broker,咱们需要遵循模型来构建代码,务必牢记 ^_^

2 RabbitMQ常用组件

上图中标识了RabbitMQ的几个常用组件,这些常用组件是RabbitMQ开发过程中必不可少的

下面咱们逐一说明一下常用组件

1、broker

它是RabbitMQ消息中间件的代理,或者说它就是RabbitMQ的具体实体

2、exchange

它是消息发送的具体实体,负责拿到message并路由到queue

在RabbitMQ中,根据不同分发需要exchange分为四种类型:

(1)Direct exchange,默认类型

当使用此exchange时,发送方的key与queue绑定的key必须完全匹配,则分发成功

(2)Fanout exchange,广播类型

当使用此exchange时,发送方的key为空,queue不需要绑定key,则分发成功

(3)Topic exchange,主题类型

当使用此exchange时,发送方的key与queue绑定的key必须模糊匹配,则分发成功

(4)Headers exchange,头类型(3.8以上版本新增类型)

当使用此exchange时,发送方的headers参数必须与queue绑定的key必须部分或完全匹配,则分发成功

3、queue

它是消息队列的具体实体,负责消息缓冲、入队和出队

4、message

它是消息本身的具体实体,负责消息封装

5、connection

它是发送方、接收方与RabbitMQ消息中间件之间建立连接的具体实体,负责建立授信的TCP长连接

6、channel

它是共享connection的轻量级连接的具体实体,负责在一个connection中建立多个并行的通信通道

7、bindings

它是exchange分发到queue的规则,负责在exchange和queue之间建立逻辑映射

小结

今天主要介绍了两个知识点

1、AMQP协议及模型

2、RabbitMQ常用组件

小伙伴们都了解了吗?

下次小T将继续介绍RabbitMQ开发

对于今天的内容有任何疑问或问题,欢迎留言或讨论 ^-^

amqp协议_AMQP协议、模型及RabbitMQ常用组件相关推荐

  1. 分布式系统概念:一致性协议、一致性模型、拜占庭问题、租约、副本协议

    1,一致性协议 两阶段提交协议与Raft协议.Paxos协议 ①两阶段提交协议 在分布式系统中,每个节点虽然可以知晓自己的操作时成功或者失败,却无法知道其他节点的操作的成功或失败.当一个事务跨越多个节 ...

  2. amqp协议java_amqp协议链接陷阱-An unexpected connection driver error occured

    前言 amqp是一种通用的消息队列数据传输协议,典型的MQ应用RabbitMQ就实现了amqp协议,所以,我们在使用amqp-client链接rabbitmq时,可以使用amqp的链接协议连接rabb ...

  3. java基础篇18-网络编程的常识和基于TCP协议的编程模型

    1.网络编程的常识   目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺....   在吗?  1.1 七层网络模型   为了保证数据传递的可靠安全等等,ISO(国际标准委员会组 ...

  4. Network 之五 TCP/IP 协议族、工作流程、常用协议格式

      最近工作需要搞网络相关的内容,由于之前对网络了解比较少,因此开始重点学习一下网络相关的各种知识.博文中的有些内容来自于在学习过程中对于一些互联网上我认为的重点知识的记录,如果侵权请联系删除!    ...

  5. 计算机操作安全协议,安全协议操作语义模型研究及应用-计算机软件与理论专业论文.docx...

    安全协议操作语义模型研究及应用-计算机软件与理论专业论文 摘 摘 要 桂林电子科技大学学位论文 桂林电子科技大学学位论文 摘要 安全协议的操作语义模型是一种分析安全协议的新模型,它结合了以往多种协议 ...

  6. alin的学习之路(Linux网络编程:十)(http协议,BS模型)

    alin的学习之路(Linux网络编程:十)(http协议,BS模型) 需求:使用B/S模型来访问主机中的文件(包括目录) 0. B/S 模型 注意事项 1. 浏览器请求ico ​ 准备一个favic ...

  7. 【计算机网络】网络层 : BGP 协议 ( BGP 协议简介 | BGP 协议信息交换 | BGP 协议报文格式 | BGP-4 常用报文 | RIP 、OSPF、BGP 协议对比 )

    文章目录 一.路由选择协议分类 二.BGP 协议 简介 三.BGP 协议 信息交换过程 三.BGP 协议 报文格式 四.BGP 协议 特点 五.BGP-4 协议的 四种报文 六.RIP .OSPF.B ...

  8. RabbitMQ常用操作命令和入门案例(一对一的简单模式)

    RabbitMQ常用操作命令和入门案例(一对一的简单模式) 一.RabbitMQ常用操作命令 常见命令列表: # 前台启动Erlang VM和RabbitMQrabbitmq-server # 后台启 ...

  9. RabbitMQ入门篇、介绍RabbitMQ常用的五种模式

    RabbitMQ 认识RabbitMQ AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为 ...

最新文章

  1. 8086 CPU 寄存器简介
  2. Object.defineProperty方法
  3. Qmake创建项目文件
  4. es搜索热度属性_是不是场吊打局?奥迪A6L对比雷克萨斯ES
  5. 黑马程序员---JVM内存组成
  6. Longhorn明年5月完成 微软将推7个版本
  7. CSS快速学习4:浮动和盒模型
  8. Redis中的value包含中文显示的问题?
  9. app开发(Uniapp开发)之Sass学习
  10. 查看、修改 nginx分布服务器ip
  11. win10系统下载中文版 64位32位 官方版​
  12. Automatic Targetless LiDAR-CameraCalibration: A Survey论文解读
  13. 关于sqlldr官方教材上的几个例子ulcase study1-9
  14. 人工智能 | 自动驾驶与人工智能前沿研究报告(人才篇)
  15. sqlserver varbinary to base64
  16. 服务器一般装在哪个位置,立尔讯塔式服务器一般使用在哪些地方?
  17. FreeFlyOS【十六】:file部分详解
  18. 【软件分享】B站互助小助手
  19. 基于java+ssm+vue的校园卡一卡通饭卡管理系统
  20. FITC/cy3/cy5/cy7-PEG-Vitamin D

热门文章

  1. ubuntu12.04升级php5.4至。。5.5
  2. 下一跳网关和转发接口的使用情况
  3. 样条之埃尔米特(Hermite)插值函数
  4. 实验集锦二 路由器基础信息、查看命令及CDP
  5. android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
  6. .Net Compact Framework实现文件下载功能
  7. Flyweight 享元模式
  8. RabbitMQ之RPC实现
  9. Windbg学习 (0x0013) 扩展命令-SOS
  10. libevent源码安装及Linux自动编译功能总结