目录
写在前面
这里介绍下RabbitMQ的相关架构,还有服务端的相关命令
rabbitMQ是Erlang语言开发的消息中间件,会不同于kafka,RocketMQ
rabbitMQ中多了User(Tag)、Virtual Hosts(绑定用户,Tag)、policy(这里更高级的操作,多机房部署,异地多活机制)
本篇包括以下几个方面的学习
- 服务搭建
- 服务端命令学习
- 基本架构
- 页面管理、监控
- 更多客户端API操作,可链接
一、服务搭建
docker pull rabbitmq:3.8-management
docker run -d --name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-v /my/rabbitmq/data:/var/lib/rabbitmq \
--hostname myrabbit \
-e RABBITMQ_DEFAULT_VHOST=/vhost \
-e RABBITMQ_DEFAULT_USER=root \
-e RABBITMQ_DEFAULT_PASS=root \
rabbitmq:3.8-management
页面管理
http://localhost:15672/
二、基本架构
架构建立在 虚拟主机和用户上
2.1、user
2.2、Virtual host
知识点
- 虚拟主机,一般设定是要绑定用户权限的(会默认绑定管理员用户),页面这里并没有体现!!
可以命令行 绑定虚拟主机用户权限,参考下文
policies 是虚拟主机的参数配置,
2.3、policies
policies 是参数配置
这个设置也是RabbitMQ不同于其他MQ的东西,可以设置Queue和Exchange的相关参数,异地多活实现中会用到这个参数配置
2.4、Exchange
Exchange和Queue才是我们的操作和监控对象…,
这个Exchange是一个比较重要的概念,交换机
每个 交换机都会默认7 个交换机,会有四种不同的类型
- direct
- fanout
- headers
- topic
一般使用时,会自定义交换机,绑定 Routing key 路由到不同的queue中,
,或 不自定义交换机,使用 默认的 AMQP Default ,这个时候, Routing key == Queue Name
2.5、Queue
需要注意 Queue 的知识点
- Type - - Classic(经典) / Quorum(法定)
- Durability - - Durable(耐用,持久存储) / transient(临时存储)
- autoDelete - - NO / YES
- Priority 优先级
Queue可以定义优先级(0-255),使用时,注意 2 点
-
将队列声明为优先级队列,即在创建队列的时候添加参数 x-max-priority 以指定最大的优先级,值为0-255(整数)。
-
为优先级消息添加优先级(范围在队列优先级最大值内生效)。
三、服务端命令学习
3.1、用户管理
添加用户
rabbitmqctl add_user username password
列出所有用户
rabbitmqctl list_users
删除用户
rabbitmqctl delete_user username
清除用户权限
rabbitmqctl clear_permissions -p vhostpath username
列出用户权限
rabbitmqctl list_user_permissions root
修改密码
rabbitmqctl change_password username newpassword
3.2、虚拟主机管理
列出所以虚拟主机:
rabbitmqctl list_vhosts
列出虚拟主机上的所有权限:
rabbitmqctl list_permissions -p h3
创建虚拟主机:
rabbitmqctl add_vhost h3
设置用户权限:
rabbitmqctl set_permissions -p h3 username ".*" ".*" ".*"
删除虚拟主机:
rabbitmqctl delete_vhost vhost h3
关于设置权限的时候,必须指定虚拟主机(智能单个指定)
3.3、服务状态、集群监控
移除所有数据,要在 rabbitmqctl stop_app 之后使用: rabbitmqctl reset
组成集群命令: rabbitmqctl join_cluster <clusternode> [--ram]
查看集群状态: rabbitmqctl cluster_status
修改集群节点的存储形式: rabbitmqctl change_cluster_node_type disc | ram
摘除节点:rabbitmqctl forget_cluster_node [--offline]
修改节点名称:rabbitmqctl rename_cluster_node oldnode1 newnode1
四、更多客户端API使用,可参考链接
五、关于 Rest API 可参考链接
https://kdocs.cn/l/cA2uFJ8r6
[金山文档] RabbitMQ Management HTTP API.html