MQTT异常掉线原因

MQTT异常掉线原因

一、业务场景

我们在使用MQTT协议的时候,有些伙伴可能会遇到MQTT客户端频繁掉线、上线问题

二、原因分析及异常处理

1.原因:使用相同的clientID

方案:全局使用的clientID保证唯一性,可以采用UUID等方式

2.原因: 当前用户没有Topic权限

方案:如果配置有acl权限,则查询当前登录mqtt用户是否具有订阅对应topic的权限,无权时也会造成一直频繁断线重连

3. 原因:在回调函数内进行业务处理遇到异常并没有捕获

方案:在可能出现异常的语句块,进行try-catch捕获

/**

* 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);

}

}

相关推荐

windows资源管理器在哪里 win10资源管理器的打开方式【详解】
dnf用辅助会封多久
365tiyu

dnf用辅助会封多久

⌛ 07-09 👁️ 5460
世界上最小的四个国家指的是什么?面积分别是多少?