消息队列的目的是为了实现各个APP 之间的通讯 ,通过MQ就可以实现跨网络通信
目前主流消息队列软件有kafka、RabbitMQ、ActiveMQ、RocketMQ等,还有相对小众的如ZeroMQ、Apache Qpid 等。
消息队列主要有以下应用场景:
- 削峰填谷 (瞬间的大量连接时,防止较大的流量脉冲,如:秒杀等活动)
- 异步解耦 (使各组件互相独立,确保主站业务的连续性,如:交易系统中的物流、购物车等不同组件)
- 顺序收发 (先进先出FIFO,如:交易系统的流程)
- 分布式事务一致性(保证数据的最终一致性,如:交易系统、支付红包)
- 大数据分析 (业务数据的实时分析)
- 分布式缓存同步 (如:实时通知商品价格的变动)
- 蓄流压测 (链路的压力测试)
```bash
docher安装
docker run -d —name rabbitmq-single-node —name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
```bash
# 手动安装
1.安装基本依赖项
2.启用适当的HTTPS传输,使apt能够从PackageCloud,Cloudsmith.io 或Launchpad等服务下载RabbitMQ和Erlang软件包
3.添加存储库签名密钥
4.添加源列表文件
5.将apt存储库添加到源列表目录 (/etc/apt/sources.list.d)
6.安装软件包
🔣RabbitMQ:5672
官网:https://www.rabbitmq.com/
采用Erlang语言开发(https://www.erlang.org),Erlang在分布式编程和故障恢复方面表现出色,电信领域被广泛使用。
#Erlang版本和RabbitMQ版本的对应 :https://www.rabbitmq.com/which-erlang.html
rabbitmq 优势:
①基于erlang 语言开发,具有高并发优点、支持分布式;
②具有消息确认机制、消息持久化机制,消息可靠性和集群可靠性高、简单易用、运行稳定、跨平台、多语言 ;
③开源
Queue 的特性:
消息基于先进先出的原则进行顺序消费消息可以持久化到磁盘节点服务器
消息可以缓存到内存节点服务器提高性能
单机部署
1.主机名解析
#早期版本安装必须做主机名解析,否则无法启动RabbitMQ服务,并且后续不能再修改主机名
hostnamectl set-hostname mq-server.zyy.com
vim /etc/hosts
10.0.0.5 mq-server.zyy.com mq-server