# 启动服务
systemctl start rabbitmq-server
# 查看服务
systemctl status rabbitmq-server
# 停止服务
systemctl stop rabbitmq-server
# 开机自启动服务
systemctl enable rabbitmq-server
RabbitMQ默认情况下有一个配置文件,定义了RabbitMQ的相关配置信息,默认情况下能满足日常的开发需求,如果需要修改,需要自己创建一个配置文件进行覆盖。
参考官网:
1、https://www.rabbitmq.com/documentation.html
2、https://www.rabbitmq.com/configure.html
# 默认安装3个插件
systemctl enable rabbitmq-server
然后再浏览器中访问:ip:15672
一定要打开15672端口 安全组
新增用户
# 用户名、密码
rabbitmqctl add_user admin admin
设置用户分配操作权限
rabbitmqctl set_user_tags admin administrator
用户级别:
为用户添加资源权限
给用设置了角色就需要再设置权限,意义不大
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
小结:
".*" ".*" ".*"# 添加用户
rabbitmqctl add_user 账号 密码
# 给用户分配角色
rabbitmqctl set_user_tags 账号 administrator
# 修改密码
rabbitmqctl change_password 需要修改的用户 需要修改的密码
# 删除用户
rabbitmqctl delete_user Username
# 查看用户清单
rabbitmqctl list_users
# 给用户设置权限
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
rabbitmqctl set_permissions -p /root ".*" ".*" ".*"
虚拟化容器技术-Docker的安装
docker 安装 报错。。md搞半天 百度
docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=5615123 -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management
none
management:查看自己相关节点信息
Policymake
Monitoring
Administrator
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5jV0fefj-1640152961397)(D:\Typora主题\图片管理\image-20210319120155370.png)]
核心概念
**Server:**又称Broker,接受客户端的连接,实现AMQP实体服务,安装RabbitMQ-server
**Connection:**连接,应用程序与Broker的网络连接TCP/IP 三次握手和四次握手
**Channel:**网络通道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户点可以建立对各个Channel,每个Channel代表一个会话任务
**Message:**消息,服务与应用程序之间专递的数据,有Properties和body组成,properties可以对消息进行修饰,比如消息的优先级,延迟等高特性,body则就是消息体的内容
**Virtual Host:**虚拟机地址,用于逻辑隔离,最上乘的消息路由,一个虚拟机理由可以有若干个Exhange和Queueu,同一个虚拟机里面不能有相同名字的Exchange
**Exchange:**交换机,接受消息,根据路由键发送消息到绑定的队列(不具备消息的存储能力)
**Bindings:**exchange和Queue之间的虚拟连接,binding中可以保护多个Routing key。
**Routing Key:**是一个路由规则,虚拟机可以用它来确定如何路由到一个特定的消息
**Queue:**队列,也称为Message Queue,消息队列,保存消息并将他们转发给消费者
RabbitMQ 整体架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-12uYfXsR-1640152961399)(D:\Typora主题\图片管理\image-20210319121640212.png)]
RabbitMQ的运行流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YbJDkvon-1640152961399)(D:\Typora主题\图片管理\image-20210319121751249.png)]
RabbitMQ支持消息的模式
参考官方:https://www.rabbitmq.com/getstarted.html
RabbitMQ订阅发布模式
图解:
具体实现:
当有多个消费者时,我们的消息会被那个消费者消费呢,我们又该如何均衡消息者消费的消息呢
两种模式:
Work模式-轮询模式(Round-Robin)
工作模式Work
类型:无
特点:发布机制
发布订阅模式
类型:fanout
特点:Fanout-发布与订阅模式,是一种广播机制,他是没有路由key 的模式
路由模式
类型:direct
特点:有routing-key的匹配模式
主题Topic模式
类型:topic
特点:模糊的routing-key的匹配模式
参数模式
类型:headers
特点:参数匹配模式
解耦,削峰,异步
同步异步的问题(串行)
串行方式:将订单消息写入数据库成功后,发送注册邮件
public void makeOrder(){
//1:保存订单
orderService.saveOrder();
//2:发送短信服务
messageService.sendSMS("order")
//3:发送email服务
emailService.sendEmail("order")
//4:发送APP服务
appService.sendApp("order")
}