RabbitMQ 初次尝试
最近有个想法,想实现通过手机客户端发送指令,实时的控制家中的树莓派进行一些操作,一个迷你的物联网模型,手机端发送指令容易实现,树莓派执行操作也还好说,问题在于一个公网的请求怎么传达给一个内网的设备,而且要实时,开始想法是手机发指令到服务器,树莓派不停的循环向服务器请求,看有没有最新的指令需要处理,显然这个想法看上去就比较 Low,之后了解到有消息队列这么个东西,手机端可以把指令发送给消息队列,消息队列同时就可以把消息推给树莓派,这样树莓派就可以不用循环的去请求服务器,经比较最终选择了 RabbitMQ,Mac 安装 RabbitMQ 还是比较简单的,就不介绍安装方法了,以下是一些基本操作以及远程连接 RabbitMQ 需要的一些配置。
1、基本命令
在后台启动 RabbitMQ:
rabbitmq-server -detached关闭 RabbitMQ:
rabbitmqctl stop
2、guest 账户只能访问 localhost
在安装目录下找到 ebin 文件夹
编辑 rabbit.app 文件
找到 {loopback_users, [<<"guest">>]} 改为 {loopback_users, []}
* 注:guest 账户为默认账户,最好修改密码或删除帐户
3、新建管理员用户
# 设置用户名和密码
rabbitmqctl add_user root root
# 设置用户标签
rabbitmqctl set_user_tags root administrator
# 设置用户权限
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"4、远程无法连接 RabbitMQ 服务器
找到 RabbitMQ 配置文件 rabbitmq-env.conf
以 macOS 为例,路径为 /usr/local/etc/rabbitmq/rabbitmq-env.conf
将 NODE_IP_ADDRESS 绑定的IP地址修改为 0.0.0.0
保存并重启服务
5、用户管理
# 新增一个用户
rabbitmqctl add_user Username Password
# 删除一个用户
rabbitmqctl delete_user Username
# 修改用户密码
rabbitmqctl change_password Username Newpassword
# 查看当前用户列表
rabbitmqctl list_users6、角色管理
超级管理员
administrator
可登陆管理控制台(启用 management plugin 的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
监控者
monitoring
可登陆管理控制台(启用 management plugin 的情况下),同时可以查看 rabbitmq 节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
策略制定者
policymaker
可登陆管理控制台(启用 management plugin 的情况下), 同时可以对 policy 进行管理,但无法查看节点的相关信息。
普通管理者
management
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
其他
无法登陆管理控制台,通常就是普通的生产者和消费者。
# 设置用户角色
rabbitmqctl set_user_tags Username Tag7. 权限管理
# 设置用户权限
rabbitmqctl set_permissions -p VHostPath Username ConfP WriteP ReadP
# 查看(指定hostpath)所有用户的权限信息
rabbitmqctl list_permissions [-p VHostPath]
# 查看指定用户的权限信息
rabbitmqctl list_user_permissions Username
# 清除用户权限信息
rabbitmqctl clear_permissions [-p VHostPath] UsernameLast updated
Was this helpful?