01 RabbitMQ:简单介绍

01 RabbitMQ:简单介绍

  • [1. 简单介绍](#1. 简单介绍)
    • [1.1. 什么是消息队列?](#1.1. 什么是消息队列?)
    • [1.2. 底层实现两大主流方式](#1.2. 底层实现两大主流方式)
    • [1.3. 两大主流方式对比](#1.3. 两大主流方式对比)
    • [1.4. 各个MQ产品的对比](#1.4. 各个MQ产品的对比)
  • [2. RabbitMQ简介](#2. RabbitMQ简介)
    • [1.2. 官网](#1.2. 官网)
    • [1.3. 体系结构](#1.3. 体系结构)
      • [1.3.1. Producer](#1.3.1. Producer)
      • [1.3.2. Consumer](#1.3.2. Consumer)
      • [1.3.3. Connection](#1.3.3. Connection)
      • [1.3.4. Channel](#1.3.4. Channel)
      • [1.3.5. Broker](#1.3.5. Broker)
      • [1.3.6. Virtual Host](#1.3.6. Virtual Host)
      • [1.3.7. Exchange](#1.3.7. Exchange)
      • [1.3.8. Queue](#1.3.8. Queue)
      • [1.3.9. Broker到Consumer](#1.3.9. Broker到Consumer)
      • [1.3.10. Exchange到Queue](#1.3.10. Exchange到Queue)

1. 简单介绍

1.1. 什么是消息队列?


消息队列: 实现 应用程序应用程序 之间 通信 的中间件产品。
应用程序 可以理解为,分布式环境下的 微服务

1.2. 底层实现两大主流方式

1.3. 两大主流方式对比

(了解即可)

1.4. 各个MQ产品的对比

RabbitMQ: 单机吞吐量每秒十万左右级别,很厉害。
RabbitMQ: 单机吞吐量每秒数万级,感觉一般。
RocketMQ: 单机吞吐量每秒十万+级,经历过双11,很厉害。
Kafka: 单机吞吐量每秒百万级,更厉害。有兴趣的小伙伴可以学习一下。

2. RabbitMQ简介

1.2. 官网

RabbitMQ: One broker to queue them all | RabbitMQ

RabbitMQ是一款 基于AMQP、由Erlang语言开发 的消息队列产品。

1.3. 体系结构

1.3.1. Producer

1.3.2. Consumer

1.3.3. Connection

当生产者想要发送消息到服务器的时候,必须建立个连接。

由于该连接是TCP连接,需要三次握手反复确认。如果每次发消息(访问RabbitMQ服务器)都新建个连接(Connection),开销太大,效率太低。

1.3.4. Channel

为了实现 Connection 的复用,在 Connection 内部创建多个 Channel

如果应用程序支持多线程,那么每个线程创建一个单独的 Channel 进行通讯。每个 Channel 都有自己的 idChannel 之间是完全隔离的。所以实际上每次发送消息,都是 Connection 内部的 Channel 完成的。

1.3.5. Broker

Broker实际就是RabbitMQ的主体服务器本身。

如果搭建RabbitMQ集群,集群里面会有多个 Broker 的实例。

1.3.6. Virtual Host

Broker 实例内,可以根据项目和功能划分多个虚拟分组。每个虚拟分组称为 Virtual Host

用户在自己的 Virtual Host 中使用RabbitMQ组件。在实际开发中,通过 Virtual Host 区分不同项目、不同功能。

1.3.7. Exchange

Virtual Host 内部会包含多个 Exchange 。中文翻译:交换机,是消息达到 Broker 的第一站。

也就是说,当我们发消息的时候,是把消息先发送到 交换机(Exchange) 上,再通过 交换机(Exchange) 这个中转站,将消息发送到 队列(Queue) 上。

1.3.8. Queue

Queue: 队列就是消息存放的的容器。

队列(Queue) 也会有多个~

📣📣📣注意:

消息只是在 交换机(Exchange) 内中转,并不会存储消息。

消息存储是在 队列(Queue) 中存储的。消息如果被消费端取走以后,消息会在 队列(Queue) 中删除。

1.3.9. Broker到Consumer

消费者(Consumer)Broker 建立连接与生产者(Producer)和 Broker 建立连接相同的道理。Channel

为了实现 Connection 的复用。

1.3.10. Exchange到Queue

如何确认消息在 交换机(Exchange) 内中转到哪个 队列(Queue) 呢?两者之间会有个绑定关系,通过路由键的方式,将 交换机(Exchange)队列(Queue) 绑定在一起。

交换机(Exchange) 可以绑定一个 队列(Queue) ,也可以绑定多个 队列(Queue)


本文隶属于 【个人专栏】:06 RabbitMQ 📋📋📋

到这里 01 RabbitMQ:简单介绍 就结束了!!!🎉🎉🎉

后续接 02 RabbitMQ:实际操作 📣📣📣

欢迎小伙伴们学习和指正!!!😊😊😊

祝大家学习和工作一切顺利!!!😎😎😎

相关推荐
2501_941225681 天前
Go语言高性能API网关设计与gRPC实战分享:微服务接口优化与负载均衡经验
rabbitmq
源码梦想家1 天前
面向未来软件工程实践:基于Go语言的高并发架构设计思考与经验分享案例分析研究方法探讨
rabbitmq
2501_941147711 天前
高并发CDN与边缘计算在互联网系统优化实践经验分享
rabbitmq
2501_941143731 天前
分布式日志系统与可观测性在高并发互联网系统架构优化与实践分享
rabbitmq
debug骑士1 天前
面向安全与高性能微服务的Rust异步架构设计与工程化实践经验分享探索研究
rabbitmq
2501_941801761 天前
人工智能与物联网:智能家居生态的崛起与未来
rabbitmq
2501_941143321 天前
基于 Node.js 构建高并发实时 Web 应用与微服务系统的架构设计实践分享
rabbitmq
源码梦想家1 天前
数字孪生应用深化背景下在珠海基于 Rust 构建城市级实时三维仿真平台的体系架构与工程实践研究
rabbitmq
2501_941877981 天前
面向未来的高可用互联网系统智能架构构建弹性业务链优化研发效率提升企业数字化能力创新实践研究
rabbitmq
2501_941144421 天前
分布式配置中心Nacos与Consul在高并发互联网系统优化实践经验分享
rabbitmq