概念

RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是一个快递站,一个快递员帮你传递快件。 RabbitMQ 与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。

四大核心概念

生产者

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

交换机

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

队列

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

消费者

消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序。 请注意生产者,消费
者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。

核心部分



专业名词说明


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 的分发依据。

感谢尚硅谷。

RabbitMQ是什么?一些简单的概念相关推荐

  1. 深入了解RabbitMQ工作原理及简单使用

    深入了解RabbitMQ工作原理及简单使用 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchange介绍 ...

  2. 深入解读RabbitMQ工作原理及简单使用

    深入解读RabbitMQ工作原理及简单使用 RabbitMQ系列目录 RabbitMQ在Ubuntu上的环境搭建 深入解读RabbitMQ工作原理及简单使用 Rabbit的几种工作模式介绍与实践 Ra ...

  3. RabbitMQ六种队列模式-简单队列模式

    前言 RabbitMQ六种队列模式-简单队列 [本文] RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列 ...

  4. RabbitMQ 上手记录-part 1-基础概念

    RabbitMQ是什么,不用多介绍了,毕竟名声在那,江湖地位摆着,搜索引擎收录着.为什么突然去学习这个框架了,毕竟工作中没有用得上(说来也惭愧,工作中开发的项目没有使用这个框架).但是作为互联网分布式 ...

  5. RabbitMQ系列(二)深入了解RabbitMQ工作原理及简单使用

    RabbitMQ简介 在介绍RabbitMQ之前实现要介绍一下MQ,MQ是什么? MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递. RabbitM ...

  6. RabbitMQ(四):RabbitMQ与Spring Boot简单整合 快速尝鲜版

    RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitM ...

  7. 获取rabbitmq连接对象_RabbitMQ——简单队列

    RabbitMQ 简述# RabbitMQ是一个消息代理:它接受并转发消息. 您可以将其视为邮局:当您将要把寄发的邮件投递到邮箱中时,您可以确信Postman 先生最终会将邮件发送给收件人. 在这个比 ...

  8. C#面向对象(一):明确几个简单的概念作为开胃菜

    绝对干货,总结了下C#面向对象的干货内容以及我几年来的使用心得,分享出来 先明确几个简单概念作为开胃菜: 1.命名空间 namespace BackStageManagement.Services 关 ...

  9. RabbitMQ(一):简介和基本概念

    一.简介 RabbitMQ是一个消息代理,可以将其视为邮局,它接受和转发消息. RabbitMQ和邮局之间的主要区别在于它不处理纸张,而是接受.存储.转发二进制blob数据 - 消息. 二.队列 队列 ...

  10. RabbitMQ之消息模式简单易懂,超详细分享

    前言 上一篇对RabbitMQ的流程和相关的理论进行初步的概述,如果小伙伴之前对消息队列不是很了解,那么在看理论时会有些困惑,这里以消息模式为切入点,结合理论细节和代码实践的方式一起来学习. 正文 常 ...

最新文章

  1. mysql 2003错误 10055_MYSQL无法连接 提示10055错误的解决方法
  2. 彻底弄懂浏览器端的Event-Loop
  3. 解决eclipse project前出现红色感叹号 但没有提示错误出在什么地方build path jar包也没报错...
  4. 《七笔勾》--陕北风光
  5. sicily 1068. Euro Efficiency
  6. mysql 自动热备份_mysql(mariadb)定时自动热备份+增量+远程备份脚本
  7. 经验 | 深度学习如何挑选GPU?
  8. 做arma模型步骤_互助问答第349期:关于ARMA预测模型的问题
  9. 商业智能数据营销该怎么做?
  10. (二)Graphivz 简单结构图及子图
  11. 谈谈对一些软件架构设计箴言的理解 对软件的过早地优化是万恶的根源 反设计模式案例简介...
  12. Excel Rendering Limitations
  13. python文件操作:文件指针移动、修改
  14. sentinel卫星_常用的遥感卫星数据(一)哨兵
  15. 可怕的pyspider猫途鹰
  16. 毫米波雷达信号处理系统
  17. Delphi 金额转大写
  18. jupyter notebook 更改工作环境和浏览器
  19. 7z压缩比最高,rar次之,zip最低
  20. 打开小米5开发者选项

热门文章

  1. 使用MOno Cecil 的相关开源项目
  2. 银河帝国----基地前奏
  3. 存储、读取、清除cookies数据
  4. 天津仁爱学院2021级高职升本科新生报到须知
  5. mysql查询时候返回一个序号
  6. 伦斯勒理工大学计算机专业好申请吗,只要达到标准,申请伦斯勒理工学院就不是一件困难的事情!...
  7. GitHub简介、fork、pull和clone、快速起步
  8. re学习笔记(65)BUUCTF - re - [GKCTF2020]Chellys identity
  9. paperwhite3翻页_Kindle vs. Paperwhite vs. Voyage vs. Oasis:您应该购买哪种Kindle?
  10. GPS定位(四)-经纬度格式转换-(互转 度转度分秒 度分秒转度……)