最近有个想法,想实现通过手机客户端发送指令,实时的控制家中的树莓派进行一些操作,一个迷你的物联网模型,手机端发送指令容易实现,树莓派执行操作也还好说,问题在于一个公网的请求怎么传达给一个内网的设备,而且要实时,开始想法是手机发指令到服务器,树莓派不停的循环向服务器请求,看有没有最新的指令需要处理,显然这个想法看上去就比较 Low,之后了解到有消息队列这么个东西,手机端可以把指令发送给消息队列,消息队列同时就可以把消息推给树莓派,这样树莓派就可以不用循环的去请求服务器,经比较最终选择了 RabbitMQ,Mac 安装 RabbitMQ 还是比较简单的,就不介绍安装方法了,以下是一些基本操作以及远程连接 RabbitMQ 需要的一些配置。
在后台启动 RabbitMQ:rabbitmq-server -detached
关闭 RabbitMQ:rabbitmqctl stop
2、guest 账户只能访问 localhost
在安装目录下找到 ebin 文件夹
编辑 rabbit.app 文件
找到 {loopback_users, [<<"guest">>]} 改为 {loopback_users, []}
* 注:guest 账户为默认账户,最好修改密码或删除帐户
# 设置用户名和密码
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
保存并重启服务
可登陆管理控制台(启用 management plugin 的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
可登陆管理控制台(启用 management plugin 的情况下),同时可以查看 rabbitmq 节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
可登陆管理控制台(启用 management plugin 的情况下), 同时可以对 policy 进行管理,但无法查看节点的相关信息。
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
无法登陆管理控制台,通常就是普通的生产者和消费者。