一、业务场景
我们在使用MQTT协议的时候,有些伙伴可能会遇到MQTT客户端频繁掉线、上线问题
二、原因分析及异常处理
-
原因:使用相同的clientID
-
原因:在回调函数内进行业务处理遇到异常并没有捕获
方案:在可能出现异常的语句块,进行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); } }