目录
前言
我们最近使用MQTT协议与设备通信,考虑到客户数据的安全性和私密性、预算的限制,以及线上环境已经在使用RabbitMQ,因此我们决定采用开源的RabbitMQ搭建服务端。我们的目标是支撑上万台设备同时在线。RabbitMQ在集群和高可用性方面表现出色,同时还能满足项目的消息中间件需求。虽然它仅支持3.1.1版本的协议,但对于我们这个项目来说已经足够了。
一、部署RabbitMQ
由于我们目前数据量不大,所以使用单机模式。我本地使用的是win10环境,进行安装测试开发,线上使用的是linux环境。RabbitMQ具体下载安装步骤不是本文重点。
RabbitMQ安装成功后,需要安装插件来开启MQTT协议支持
提供与后端服务交互使用,端口1883
rabbitmq-plugins enable rabbitmq_mqtt
开启成功后,我们可以通过MQTTX这个工具来测试我们的MQTT服务端是否工作正常,使用RabbitMQ默认用户guest进行连接,注意将MQTT版本改为3.1.1
二、设备连接鉴权
1.开启插件
想让RabbiqMQ走我们自定义的鉴权接口,需要先开启 rabbitmq_auth_backend_http 插件,同时该插件还推荐配合 rabbitmq_auth_backend_cache 通过缓存减轻授权认证服务器压力。
rabbitmq-plugins enable rabbitmq_auth_backend_http
rabbitmq-plugins enable rabbitmq_auth_backend_cache
另外使用 rabbitmq-plugins list 命令可以查看已经开启的插件和版本。
2.修改配置
然后我们可以去下载