了解RabbitMQ前,你需要先晓得MQ
MQ
—>【Message Queue】
消息队列,两个应用程序间的通信方法,由消息系统来确保消息的可靠传输【简言之消息以管道的方式进行传递】
下来便是—>RabbitMQ
是一个开源的AMQP实现,Erlang语言编写,支持多种客户端【python,java,c ,php等】,实现应用间的数据共享
主要实现的功能/作用
- 解耦
- 异步
- 削峰
这里的话,还需补充一点,AMQP协议
【Advanced Message Queuing Protocol】
高级消息队列协议,是一个网络协议,
它支持符合要求的客户端应用和消息中间件代理之间进行通信
参与消息队列的重要角色:
–>生产者:消息的创建者,负责创建和推送数据到消息服务器
–>消费者:消息的接收方,用于处理数据和确认消息
–>代理:就是 RabbitMQ 本身,用于扮演“快递”的角色,本身不生产消息,只是扮演“快递”的角色
组件的介绍:
Channel(信道):消息推送使用的通道
Exchange(交换器):用于接受、分配消息
vhost(虚拟主机):不用用户的权限分离
Queue(队列):用于存储生产者的消息
RoutingKey(路由键):用于把生成者的数据分配到交换器上
BindingKey(绑定键):用于把交换器的消息绑定到队列上
简述过程:
客户端连接到消息队列服务器,打开一个channel
客户端声明一个exchange,并设置相关属性
客户端声明一个queue,并设置相关属性
客户端使用routing key,在exchange和queue之间建立好绑定关系
客户端投递消息到exchange
工作原理图
描述:生产者发送message到exchange,exchange通过匹配 routing key与building key,然后把消息发送到对应的quence,prefetchCount限制发送消费者message的数量
rabbitMQ应用模式
单一模式
普通模式(默认集群模式)
镜像模式(队列做成镜像队列,存在多个节点)
Rabbitmq的集群节点包括内存节点、磁盘节点,支持消息持久化、也就是数据写在磁盘上