什么是消息队列?
消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方的存在。
为什么要使用消息队列?
- 解耦
- 冗余
- 灵活性 & 峰值处理能力
- 可恢复性
- 送达保证
- 排序保证
- 缓冲
- 理解数据流
- 异步通信
为什么选择RabbitMQ(kafka和RabbitMQ的比较)
1、 RabbitMq比kafka成熟,在可用性上,稳定性上,可靠性上,RabbitMq超过kafka
2、 Kafka设计的初衷就是处理日志的,可以看做是一个日志系统,针对性很强,所以它并没有具备一个成熟MQ应该具备的特性
3、 Kafka的性能(吞吐量、tps)比RabbitMq要强,这篇文章的作者认为,两者在这方面没有可比性。
安装RabbitMQ
RPM安装参考 https://blog.csdn.net/chang_li/article/details/114965808
源码安装参考 https://blog.csdn.net/m1195900241/article/details/119803640
#创建erlang.repo库
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
#安装
yum install erlang
#创建rabbitmq-server.repo库
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
#安装
yum install rabbitmq-server
操作命令
systemctl start rabbitmq-server
systemctl status rabbitmq-server
systemctl restart rabbitmq-server
设置为开机启动
systemctl enable rabbitmq-server
添加新用户
# 添加用户
rabbitmqctl add_user fastimFastIm123
# 分配角色
rabbitmqctl set_user_tags fastim administrator
# 设置权限
rabbitmqctl set_permissions -p "/" fastim ".*" ".*" ".*"
远程访问
管理配置
安装web管理页面插件(先启动rabbitmq服务)用户名 密码guest:
rabbitmq-plugins enable rabbitmq_management
开放端口
sudo firewall-cmd --add-port=15672/tcp --permanent
重新加载防火墙配置
sudo firewall-cmd --reload
摘要
Springboot整合一之Springboot整合RabbitMQ
深入了解RabbitMQ工作原理及简单使用
RabbitMQ 如何保证消息不丢失?