MQTT订阅主题就会收到消息的问题–Retained
之前的项目使用了mqtt消息队列作为第三方消息的接收和发送,本地作为mqtt的订阅者也作为发送者。
本地接受到mqtt订阅的消息,作处理后再重新发送到云服务端。这里遇到一个坑(其实是自己造成的),在订阅主题后就会收到mqtt服务器发送的消息,查找资料后发现是在publish某条数据时,设置了Retained(默认是ture,这里选择后为false)。

详细资料可以查看https://blog.youkuaiyun.com/libaineu2004/article/details/78667726
大意是设置了Retained,那每次有客户端订阅该主题,就会发送你之前设置了Retained的publish的数据。
解决的办法就是再publish一条无数据的带Retained(false)的消息即可。

之后再publish就不要带Retained
或者在代码里设置MqttMessage的Retained为false。
项目中本地作为MQTT的订阅者和发送者,接收订阅消息处理后发往云服务端。订阅主题后会收到服务器消息,原因是publish数据时设置了Retained。设置该参数后,客户端订阅主题会收到之前设置Retained的publish数据。解决办法是发无数据且Retained为false的消息,后续publish不带Retained或代码里设为false。
2524





