MQTT异常掉线原因

一、业务场景

我们在使用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);
            }
        }
    ​​​​​​​
发布了5 篇原创文章 · 获赞 2 · 访问量 1887

猜你喜欢

转载自blog.csdn.net/qq_37949192/article/details/103990913