Mqtt qos=3 结合实际例子理解

简书地址:https://www.jianshu.com/p/8b0291e8ee02

 qos=2 实例说明

   = 例子:App发布到网关的Topic获取网关中存储的网关下设备:
步骤一: Publisher(App), app存储msg-> Publish-> 
 broker(服务器),服务器存储msg
 服务器回复app PUBREC,发布收到
 app 告诉服务器 PUBREL, 发布释放
 服务器回复 App , PUBCOMP,那么App在CallBack中回调
 @Override
   public void deliveryComplete(IMqttDeliveryToken token) {
    try {
        //消息发送成功的回调
        LogUtils.d(TAG, "mqtt  Message 交付成功:" + new String(token.getMessage().getPayload()));
      } catch (MqttException e) {
        e.printStackTrace();
       }
  }
 App 中Mqtt回调改方法,表示消息发送成功回调,服务器100%收到
 App 中Delete(Msg)
   -- 最终结果:消息100%传输到服务器
   
  步骤二: *** 服务器向订阅某一个主题的网关发送数据
   *** Publisher(服务器)-> 存储msg-> push到网关(Subscriber),
   网关中存储store(msg),
   网关回复服务器PUBREL,发布收到
   服务回复网关,发布释放
   网关回复服务器PUBCOMP
   服务器delete(msg)

   -- 最终结果:网关100%收到数据

  步骤三:  *** 网关收到msg以后,查询网关下数据列表
    那么此时 Publisher(就是网关了) Subscriber(App), App订阅了接收数据的Topic
    Publisher(网关)发送publish到服务器broker,
    broker回复网关PUBREC
    网关回复服务器pubrel
    服务回复网关pubcomp
    网关delete数据

    -- 最终结果:网关数据100%发送到服务器

   步骤四: *** 服务器向订阅某一个topic的app发送数据
        //所有消息在这里返回
    @Override
    public void messageArrived(String topic, MqttMessage message) throws Exception {
       // App接受的所有消息在这里处理
    }
    -- 最终结果:服务器数据100%推送到订阅到改Topic的App

发布了141 篇原创文章 · 获赞 51 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/dreams_deng/article/details/89480309
今日推荐