• mqtt 消息重传


    消息重传
    MQTT协议标准规范的一部分。
      协议规定作为通信双方 服务端 和 客户端 对于自己发送到对端的 publish 消息都应该满足其 服务质量的要求。
      QoS 1:消息至少送达一次;即发送端会一直重发该消息,除非收到了对端对该消息的确认。是在MQTT协议的上层(即业务的应用层)相同QoS1 消息可能会受到多次。
      QoS 2:消息只送达一次;即该消息在上层仅会接收到一次。
    注:QoS 1 和QoS 2 的publish 报文在MQTT协议栈这一层都会发送重传,
      QoS 1 消息发生重传后,在MQTT 协议栈上层,也会收到这些重发的publish消息。
      QoS 2 消息无论如何重传,最终在MQTT协议栈上层,都只会收到一条publish消息。。

    消息重发的两种场景
      1、publish 报文发送给对端后,规定时间内未收到应答。则重发这个报文。
      2、在保持会话的情况下,客户端重连后; emqx会自动重发为应答的消息,以确保QoS 流程的正确。


      文件 etc/emqx.conf 中
      retry_interval  duration 默认 30s 等待一个超时间隔,如果没收到应答则重传消息。

    协议规范与设计
      重传对象
      QoS 1 ,涉及2个报文,发送端和接收端各发送1次;这2个报文有相同的PacketId。只需要对publish报文进行重发。
      QoS 2 , 涉及4个报文,发送端和接收端各发送2次;这4个报文有相同的PacketId。需要发送端对publish和pubrel报文进行重发。

  • 相关阅读:
    Go的Web之旅【部署】
    module declares its path as: github.com/xxx/yyy【Go报错】
    android studio快捷键集合
    Web App 概述
    WIN10 kafka搭建完后命令测试步骤自用
    Echarts tab 切换解决图不能显示的问题
    如何为不定高度(height:auto)的元素添加CSS3 transition-property:height 动画
    手持设备开发项目实例
    SQL Server 查找表问题
    Tomcat 10 升级注意事项
  • 原文地址:https://www.cnblogs.com/wgy1/p/13708448.html
Copyright © 2020-2023  润新知