最近做个共享充电桩的项目,其中云端跟下位机间的通讯采用的就是物联网通讯协议MQTT。
需求方需要再设备断开链接的时候,发送通知给管理人员,以方便及时处理问题。
由于刚接触MQTT通讯协议,查了下 需要订阅系统主题消息,这样就可以及时的知道哪些设备连上来了,哪些设备断开链接了。
主题为:
$SYS/brokers/(node)/clients/(clientId)/connected
$SYS/brokers/(node)/clients/(clientId)/disconnected
直接订阅,然后发现应用根本启动不了了。走到订阅系统主题的时候 直接报错(MqttException 128)
一番百度后,仍然没有找到有效解决方案,于是乎查官方文档,还好官方文档有中文版的。
原来系统主题不是谁都可以订阅的,仔细想想也是啊,系统主题发布的消息可都是敏感内容,当然要限制订阅了。
配置了允许云端订阅系统主题后,下一个问题又出现了:由于该项目已经上线使用了,有一定用户量了,如和在不重启MQTT服务的前提下让配置生效呢?然后又是一番文档查阅,最后发现:
真是感谢官方文档的强大。问题完美解决。在此吐槽下那个报错内容,直接报个数字,实在是太不友好了,一开始看到这错误的时候,一脸懵逼。
特此记录