一、MQ简介
消息队列,即MQ,Message Queue。
1.消息队列架构
- Producer:消息生产者,负责生产和发送消息到Broker;
- Broker:消息处理中心,负责消息存储、确认、重试等;
- Consumer:消息消费中心,负责从Broker中获取消息并处理。
2.消息队列特性
- 异步性:将耗时的同步任务通过发送消息的方式进行异步任务处理,减少等待时间。
- 松耦合:不同系统、服务之间可以通过消息队列进行通信,不用关心彼此的实现细节,数据格式一致。
- 分布式:为了防止消息堵塞,可以对消费者集群进行横向扩展,避免单点故障,同样队列本身也可以。
- 可靠性:将接收到的消息落盘,就算服务器重启或者发生故障,恢复之后也能重新加载。
3.AMQP和JMS
MQ是消息通信的模型,并不是具体实现。现在实现MQ的有两种主流方式:AMQP和JMS
区别和联系
- JMS是定义了统一的接口,来对消息操作进行统一;AMQP是通过规定协议来统一数据交互的格式。
- JMS限定了必须使用Java语言;AMQP只是协议,不规定实现方式,因此是跨语言的。
- JMS规定了两种消息模型;而AMQP的消息模型更加丰富。
4.常见的MQ产品
- ActiveMQ:基于JMS;
- RabbitMQ:基于AMQP协议,erlang语言开发,稳定性好;
- RocketMQ:基于JMS,阿里巴巴产品;
- Kafka:分布式消息系统,高吞吐量。
二、RabbitMQ安装
1.安装Erlang
安装配置环境变量