RabbitMQ 是采用Erlang语言开发,实现了高级消息队列协议AMQP (advanced Message Queuing Protocol)的开源中间件,并支持多种编程语言语言。
一、AMQP协议:
AMQP协议 是基于在应用层协议上的一个开放标准,为面向消息中间件设计提供的一种统一的应用层标准高级消息队列协议。
下图AMQP的工作流程图:
Producer: 生产者
Exchage: 交换机
Queue: 队列
Channel: 通道
Consumer: 消费者
二、MQ(message queue 消息队列)的目的
1. 实现流量削峰,确保在大流量下应用程序的稳定。
2. 应用解耦,降低个模块之间的依赖,实现应用程序的高可扩展性和高可维护性,可实现分布式架构。
3. 实现异步操作,提高的应用程序的性能。
三、 RabbitMQ的特性
1. 性能好,延时低。
2. 有完善的管理工具和管理页面。
3. 社区活跃,更新速度快。
4. 可伸缩性强,可以部署集群。
5. 消息持久化,可从内存持久化消息到硬盘,再从硬盘加载到内存。
目前RabbitMQ的吞吐量已经达到了万级别,但相对于kafka等其他达到十万级以上消息中间件来说还是有些不足的,不过目前也能基本满足各大应用的需要 ,由于它性能相对比较好,所以吞吐量基本被大部分公司忽略。