RabbitMQ的安装及使用
RabbitMQ 安装
安装环境:
- CentOS7
1 | wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm |
RabbitMQ 常用端口
client 端通信端口: 5672
管理端口 : 15672
server 间内部通信端口: 25672
可能的问题
如端口出现不能访问,考虑是否防火墙问题,可以使用形如以下命令开启或直接关闭防火墙:
firewall-cmd --add-port=15672/tcp --permanent
运行 rabbitmqctl status 出现 Error: unable to connect to node rabbit@controller: nodedown 之类问题考虑如下几种解决办法:
1、重启服务
service rabbitmq-server stop
service rabbitmq-server start
2、检查 /var/lib/rabbitmq 中是否存在 .erlang.cookie,没有则新建一个,里面随便输入一段字符串
3、重新安装服务
4、百度或者 Google 一下
管理 RabbitMQ
日志一般存放位置
Linux
/var/log/rabbitmq/rabbit@XXX.log
/var/log/rabbitmq/rabbit@XXX-sasl.log
Windows
C:\Users\Administrator\AppData\Roaming\RabbitMQ\log\ rabbit@XXX.log
C:\Users\Administrator\AppData\Roaming\RabbitMQ\log\ rabbit@ XXX-sasl.log
第一个是记录 MQ 启动、连接日志,第二个是 saal 用来记录 Erlang 相关的信息,例如查看 Erlang 崩溃的报告。
管理虚拟主机
rabbitmqctl add_vhost [vhost_name]
rabbitmqctl list_vhosts
启动和关闭 rabbitmq
以服务方式
service rabbitmq-server stop
service rabbitmq-server start
service rabbitmq-server status
以应用程序方式
rabbitmq-server
启动 Erlang 节点和 Rabbitmq 应用
rabbitmqctl stop
关闭 Erlang 节点和 Rabbitmq 应用
rabbitmqctl status
可以检查消息节点是否正常
RabbitMQ 配置文件放在 /etc/rabbitmq
下,名为 rabbitmq.config
,没有且需要使用则可以自己新建一个
单独关闭 RabbitMQ 应用
rabbitmqctl stop_app
关闭 Rabbitmq 应用
rabbitmqctl start_app
启动 Rabbitmq 应用
用户管理
rabbitmqctl add_user [username] [pwd]
rabbitmqctl delete_user [username]
rabbitmqctl change_password Username Newpasswordrabbitmqctl list_users
用户权限控制
guest 用户
guest 是默认用户,具有默认 virtual host “/“上的全部权限,仅能通过 localhost 访问 RabbitMQ 包括 Plugin,建议删除或更改密码。可通过将配置文件中 loopback_users 来取消其本地访问的限制:[{rabbit, [{loopback_users, []}]}]
用户权限
用户仅能对其所能访问的 virtual hosts 中的资源进行操作。这里的资源指的是 virtual hosts 中的 exchanges、queues 等,操作包括对资源进行配置、写、 读。配置权限可创建、删除、资源并修改资源的行为,写权限可向资源发送消息,读权限从资源获取消息。比如:
exchange 和 queue 的 declare 与 delete 分别需要:exchange 和 queue 上的配置权限
queue 的 bind 与 unbind 需要:queue 写权限,exchange 的读权限
发消息(publish)需 exchange 的写权限
获取或清除(get、consume、purge)消息需 queue 的读权限
对何种资源具有配置、写、读的权限通过正则表达式来匹配,具体命令如下:
rabbitmqctl set_permissions [-p <vhostpath>] <user><conf><write><read>
如用户 King 在虚拟主机 logHost 上的所有权限:
rabbitmqctl set_permissions –p logHost King '.*' '.*' '.*'
设置用户角色:
rabbitmqctl set_user_tags User Tag
User 为用户名, Tag 为角色名(对应于下面的 administrator,monitoring,policymaker,management,none)
RabbitMQ 的用户角色分类
none
- 不能访问 management plugin,通常就是普通的生产者和消费者
management
- 普通的生产者和消费者加:
- 列出自己可以通过 AMQP 登入的 virtual hosts
- 查看自己的 virtual hosts 中的 queues, exchanges 和 bindings
- 查看和关闭自己的 channels 和 connections
- 查看有关自己的 virtual hosts 的“全局”的统计信息,包含其他用户在这些 virtual hosts 中的活动。
policymaker
- management 可以做的任何事加:
- 查看、创建和删除自己的 virtual hosts 所属的 policies 和 parameters
monitoring
- management 可以做的任何事加:
- 列出所有 virtual hosts,包括他们不能登录的 virtual hosts
- 查看其他用户的 connections 和 channels
- 查看节点级别的数据如 clustering 和 memory 使用情况
- 查看真正的关于所有 virtual hosts 的全局的统计信息
administrator
- policymaker 和 monitoring 可以做的任何事加:
- 创建和删除 virtual hosts
- 查看、创建和删除 users
- 查看创建和删除 permissions
- 关闭其他用户的 connections
查看
查看队列
rabbitmqctl list_queues
查看交换器
rabbitmqctl list_exchanges
查看绑定
rabbitmqctl list_bindings
如果命令不太懂,可以直接 rabbitmqctl 命令进行查询