01 RabbitMQ:简单介绍
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 都有自己的 id , Channel 之间是完全隔离的。所以实际上每次发送消息,都是 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:实际操作 📣📣📣
欢迎小伙伴们学习和指正!!!😊😊😊
祝大家学习和工作一切顺利!!!😎😎😎