一、业务场景
我们在使用MQTT协议的时候,有些伙伴可能会遇到MQTT客户端频繁掉线、上线问题
二、原因分析及异常处理
1.原因:使用相同的clientID
方案:全局使用的clientID保证唯一性,可以采用UUID等方式
2.原因: 当前用户没有Topic权限
方案:如果配置有acl权限,则查询当前登录mqtt用户是否具有订阅对应topic的权限,无权时也会造成一直频繁断线重连
3. 原因:在回调函数内进行业务处理遇到异常并没有捕获
方案:在可能出现异常的语句块,进行try-catch捕获文章来源:https://www.toymoban.com/news/detail-689774.html
/**
* subscribe订阅后得到的消息会执行到这里
*/
@Override
public void messageArrived(String topic, MqttMessage message) {
String msg = new String(message.getPayload());
try {
//此处可能因为收到的消息不合法,会造成JSON转化异常,若异常未捕获,会导致MQTT客户端掉线
JSONObject jsonObject = JSON.parseObject(msg);
String gwId = String.valueOf(jsonObject.get("gwId"));
} catch (JSONException e) {
log.error("JSON Format Parsing Exception : {}", msg);
}
}文章来源地址https://www.toymoban.com/news/detail-689774.html
到了这里,关于MQTT异常掉线原因的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!