环境:
RabbitMQ:3.7.6;Erlang:otp_win64_20.3
摘要说明:
本篇文章主要讲述如何在window系统中安装RabbitMQ的相关基础应用、用户管理及权限管理;
步骤:
1.RabbitMQ安装
a.安装Erlang
由于RabbitMQ用erlang语言开发,所以安装RabbitMQ必须先安装Erlang:
Erlang官网地址为:http://www.erlang.org/download.html
选择对应版本下载安装再配置环境变量:
ERLANG_HOME:C:\Program Files\erl9.3
Path:%ERLANG_HOME%\bin
b.安装RabbitMQ
RabbitMQ官网地址为:http://www.rabbitmq.com/download.html
选择对应版本下载安装再配置环境变量
RABBITMQ_SERVER:C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.6
Path:%RABBITMQ_SERVER%\sbin
c.版本配对
RabbitMQ版本支持的Erlang版本是有限制的,若不配对则会报错:
Could not start application logger: Logger.App.start(:normal, []) returned an error: shutdown: failed to start child: Logger.ErrorHandler
** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started
RabbitMQ版本支持的的Erlang版本可参考官网:http://www.rabbitmq.com/which-erlang.html
2.RabbitMQ基础使用
a.服务器启动
使用管理员角色打开:开始-运行-cmd;
net stop RabbitMQ && net start RabbitMQ
也可拆开使用即停止服务和启动服务;
b.开启管理软件
在开始-运行-cmd下打开%RABBITMQ_SERVER%\sbin,在此目录下输入命令:
rabbitmq-plugins.bat enable rabbitmq_management
开启成功后,浏览器中输入http://localhost:15672/进入管理页面;
c.用户管理
在开始-运行-cmd下打开%RABBITMQ_SERVER%\sbin,在此目录下输入命令:
查看用户列表,默认有一个用户guest:
rabbitmqctl.bat list_users
新增用户:
rabbitmqctl.bat add_user xxx(用户名) xxx(密码)
设置用户角色:一个或多个
rabbitmqctl.bat set_user_tags xxx(用户名) xxx(用户角色)
rabbitmqctl.bat set_user_tags xxx(用户名) xxx(用户角色1) xxx(用户角色2) ...
rabbitmq用户角色可分为五类:超级管理员, 监控者, 策略制定者, 普通管理者以及其他
1) 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
2) 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
3) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。
4) 普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
5) 其他的
无法登陆管理控制台,通常就是普通的生产者和消费者
修改用户密码:
rabbitmqctl.bat change_password xxx(用户名) xxx(用户角色)
删除用户:
rabbitmqctl.bat delete_user xxx(用户名)
注:上述的rabbitmqctl.bat可变成rabbitmqctl
可使用刚创建的用户登录管理软件控制台:
上述操作若报下列错误:
Error: unable to perform an operation on node 'rabbit@xxxx'. Please see diagnostics information and suggestions below.
这个错误是要求.erlang.cookie在系统中一致,将c:User\下的erlang.cookie复制到C:\Windows\System32\config\systemprofile使其一致
d.权限管理
在上一章我们知道一个服务器实体(Broker)可以建立多个虚拟主机(vhost),这里面就需要对用户分配vhost的权限;
创建虚拟主机:
rabbitmqctl add_vhost xxx(vhost)
删除虚拟机:
rabbitmqctl delete_vhost xxx(vhost)
虚拟主机查询:
rabbitmqctl list_vhosts
权限授予:
rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"
例如,此命令指示RabbitMQ代理授予名为“tonyg”的用户访问名为“/myvhost”的虚拟主机,并对名称以“tonyg-”开头的所有资源具有配置权限,并对所有资源执行写入和读取权限资源:
set_permissions [-p vhost] user conf write read
vhost:要授予用户访问权限的虚拟主机的名称,默认为“/”。
user:用于授予对指定虚拟主机的访问权限的用户的名称。
conf:正则表达式匹配为其授予用户配置权限的资源名称。
write:正则表达式,匹配为其授予用户写入权限的资源名称。
read:正则表达式,匹配为其授予用户读取权限的资源名称。
设置用户权限。
清除授权:
rabbitmqctl clear_permissions -p / myvhost tonyg
例如,此命令指示RabbitMQ代理拒绝名为“tonyg”的用户访问名为“/ myvhost”的虚拟主机:
查询主机授权:
rabbitmqctl list_permissions -p /myvhost
查询用户授权:
rabbitmqctl list_user_permissions tonyg
更多请参考官网:http://www.rabbitmq.com/rabbitmqctl.8.html#set_permissions