rabbitMQ入门
RabbitMQ服务命令
# 启动服务
systemctl start rabbitmq-server
# 查看服务
systemctl status rabbitmq-server
# 停止服务
systemctl stop rabbitmq-server
# 开机自启动服务
systemctl enable rabbitmq-server
RabbitMQ的配置
RabbitMQ默认情况下有一个配置文件,定义了RabbitMQ的相关配置信息,默认情况下能满足日常的开发需求,如果需要修改,需要自己创建一个配置文件进行覆盖。
参考官网:
1、https://www.rabbitmq.com/documentation.html
2、https://www.rabbitmq.com/configure.html
RabbitMQ管理界面及授权操作
RabbitMQ管理界面
# 默认安装3个插件
systemctl enable rabbitmq-server
然后再浏览器中访问:ip:15672
一定要打开15672端口 安全组
授权账号密码
新增用户
# 用户名、密码
rabbitmqctl add_user admin admin
设置用户分配操作权限
rabbitmqctl set_user_tags admin administrator
用户级别:
- administrator 可以登录操作台,查看所有信息,可以对rabbitmq进行管理
- monitoring 监控者 登录控制台,查看所有信息
- policymaker 策略定制者 登录控制台,指定策略
- managment 普通管理员,登录控制台
为用户添加资源权限
给用设置了角色就需要再设置权限,意义不大
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 ".*" ".*" ".*"
RabbitMQ之Docker安装
Docker安装RabbitMQ
虚拟化容器技术-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
RabbitMQ的角色分类
none
- 不能访问management plugin
management:查看自己相关节点信息
- 列出自己可以通过AMQP登入的虚拟机
- 查看自己的虚拟机节点virtual hosts 的queues,exchanges和bindings信息
- 查看和关闭自己的channels和connections
- 查看有关自己的虚拟机节点virtual hosts的统计信息,包括其他用户在这个截断virtual hosts中的活动信息
Policymake
- 包含managesment所有权限
- 查看和创建和删除自己的virtual hosts所属的policies和parameters信息
Monitoring
- 包含management所有权限
- 罗列出所有的virtual hosts,包括不能登录的virtual hosts
- 查看其他用户的connections和channels信息
- 查看节点级别的数据如:clustering和memory使用情况
- 查看所有的virtual hosts的全局统计信息
Administrator
- 最高权限
- 可以创建和删除virtual hosts
- 可以查看,创建,删除users
- 查看创建permisssions
- 关闭所有用户的connections
RabbitMQ的核心组成部分
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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订阅发布模式
图解:
具体实现:
- 类型:fanout
- 特点:Fanout 发布于订阅模式,是一种广播机制,他是没有路由key的模式
RabbitMQ案例-Work模式-轮询模式
当有多个消费者时,我们的消息会被那个消费者消费呢,我们又该如何均衡消息者消费的消息呢
两种模式:
- 轮询模式的分发:一个消费者一条,按均分配
- 公平分发:根据消费者的消费能力进行公平分发,处理快的处理的多,处理慢的处理少,按劳分配
Work模式-轮询模式(Round-Robin)
- 类型:无
- 特点:该模式接收消息是当有多个消费者接入时,消息的分配模式是一个消费分配一条,直至消费完成
工作模式Work
类型:无
特点:发布机制
发布订阅模式
类型:fanout
特点:Fanout-发布与订阅模式,是一种广播机制,他是没有路由key 的模式
路由模式
类型:direct
特点:有routing-key的匹配模式
主题Topic模式
类型:topic
特点:模糊的routing-key的匹配模式
参数模式
类型:headers
特点:参数匹配模式
RabbitMQ使用场景
解耦,削峰,异步
同步异步的问题(串行)
串行方式:将订单消息写入数据库成功后,发送注册邮件
public void makeOrder(){
//1:保存订单
orderService.saveOrder();
//2:发送短信服务
messageService.sendSMS("order")
//3:发送email服务
emailService.sendEmail("order")
//4:发送APP服务
appService.sendApp("order")
}