文章目录
概述
RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue)的开源实现。
RabbitMQ解决了什么问题
对于一个大型的软件系统来说,它会有很多的组件或者说模块。那么这些模块如何通信?
传统的IPC很多都是在单一系统上的,模块耦合性很大,不适合扩展。就算使用socket也还有许多问题:
1. 信息的发送者和接受者如何维持这个连接,如果一方的连接中断,这期间的数据怎么办?
2. 如何降低发送者和接受者的耦合度?
3. 如何让Priority高的接受者先接到数据?
4. 如何做到load balance?
5. 如何有效的将数据发送到相关的接受者?也就是说将接受者subscribe不同的数据,如何做有效的filter。
6. 如何做到可扩展,甚至让这个通信模块发到cluster上?
7. 如何保证接受者接收到了完整、正确的数据?
AMDQ协议解决了以上的问题,而RabbitMQ实现了AMQP。
RabbitMQ运转流程
整个消息队列的使用过程
生产者发送消息的过程:
1. 生产者连接到RabbitMQ Broker, 建立一个连接(