一、RabbitMQ简介

197 阅读2分钟

什么是RabbitMQ?

RabbitMQ是由Erlang语言开发的实现了AMQP(高级消息队列协议)开源的面向消息中间件。

消息队列有什么作用?

消息队列可以实现消息的接收、存储、转发;

为什么要使用消息队列?

1、异步处理

2、业务解耦

3、流量削峰/平谷

4、消息广播

5、最终一致性

消息中间件都有哪些?

1、RabbitMQ

2、ActiveMQ

3、RocketMQ

4、Kafka

为什么要使用RabbitMQ?

1、基于AMQP协议

2、高并发

3、高性能

4、高可用

5、强大的社区支持,以及很多公司都在使用

6、支持插件

7、支持多语言

RabbitMQ的常用概念

Server:又称Borker,RabbitMQ所在的服务器;

Producter:生产者,消息的发送者;

Consumer:消费者,消息的接收者;

Connection:应用程序与Server之间的网络链接;

Channel:信道,应用程序与Server之间通过Channel进行消息读写,一个Connection中可以建立多个Channel,每一个Channel代表一个会话任务;

Exchange:交换机,RabbitMQ组成部分之一,主要负责接收消息,并根据消息中的routing key(路由key)或Arguments(参数)转发到特定的Queue(消息队列)中;

Queue:消息队列,RabbitMQ组成部分之一,主要负责存储和转发消息;

Routing key:一个虚拟地址,Exchange可用它来确定如何路由消息;

Bingding:Exchange与Queue之间通过Routing key或Arguments形成的虚拟连接,Bingding中包含Routing key和Arguments;

Virtual Host:其实是一个虚拟概念。类似于权限控制组,一个Virtual Host里面可以有若干个Exchange和Queue,可以用来隔离Exchange和Queue。,同一个Virtual Host里面不能有相同名称的Exchange和Queue。但是权限控制的最小粒度是Virtual Host。

RabbitMQ的模型

RabbitMQ模型.png

RabbitMQ的工作流程

1、Producter推送Message以及Exchange Name和Routing key到Server;

2、Server根据Exchange Name找到指定的Exchange,Exchange可以遍历其所有的Bingding中Routing key,与Message中Routing key进行匹配,若匹配成功,则将Message发送到匹配成功的Bingding中对应的Queue中;

3、消费者订阅Queue,当Queue中有Message时,自动发送给消费者;