MQTT異常掉線原因

Iot-Mr.Qu發表於2020-01-15

一、業務場景

我們在使用MQTT協議的時候,有些夥伴可能會遇到MQTT客戶端頻繁掉線、上線問題

二、原因分析及異常處理

  1. 原因:使用相同的clientID

    方案:全域性使用的clientID保證唯一性,可以採用UUID等方式
  2. 原因:在回撥函式內進行業務處理遇到異常並沒有捕獲

    方案:在可能出現異常的語句塊,進行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);
            }
        }
    ​​​​​​​

相關文章