当前位置: 首页 > article >正文

MQTT: PUBLISH

PUBLISH

DUP flag


当客户端或者服务器第一次尝试发送一个 PUBLISH 消息的时候,DUP 应该未设置为 0。

如果 DUP 为 1, 说明服务器或者客户端正在尝试重新传输一个之前已经发送过的 PUBLISH 消息。

对于 QoS 0 的消息, DUP 应该总是为 0.

对于服务器端来说,接收到的 PUBLISH 中的消息的 DUP 值不影响服务器在分发这个消息到订阅者时的 PUBLISH 消息中的 DUP 的值,它们之间没有必然联系。 是否是 DUP,完全由当前将被发送的 PUBLISH 消息是否是一个重传的消息决定。

对于PUBLISH 消息的接收者,如果 DUP 为 1,并不代表自己之前已经收到了这个消息。


RETAIN


对于服务器,收到一个 PUBLISH消息,RETAIN 是 1,那么服务器需要保存相应的 Application Message 和 QoS 值,在接下来如果有新的配置当前主题的订阅者来到的时候,将这个消息分发给它们。

当一个新的订阅者订阅了一个主题,那么当前主题中最后一个 RETAIN 消息(如果有的话)应该被分发给当前订阅者。如果当前订阅匹配到多个主题,那么每个主题都需要做这样的检查。

如果服务器收到一个 QoS 0 的消息,但是 RETAIN 值为 0, 服务器需要丢弃当前主题中所有的 RETAIN 消息。然后将当前新的 QoS 0 消息作为当前主题的新的 RETAIN 消息,但是可以选择在任意时间丢弃这个消息。如果丢弃了这个消息,那么当前主题中将没有其他 RETAIN 消息了。

当服务器给客户端发送 PUBLISH消息时, 如果当前消息发送的原因是这个客户端刚刚订阅了一个新主题,此时 RETAIN 需要被设置为 1. 如果当前消息发送的原因是当前消息匹配了当前客户端已有的一个订阅,此时 RETAIN 需要被设置为 1(此时,即使这个PUBLISH在发送给服务器时 RETAIN 是 1)。

当服务器收到一个 RETAIN 的 PUBLISH 消息,但是这个消息的 payload 是空的时候, 它还是会像处理正常的 PUBLISH 那样将消息分发给所有订阅者。然后相同主题的 RETAIN 消息会被移除,并且接下来的订阅者将不会收到任何RETAIN消息。

“As normal” means that the RETAIN flag is not set in the message received by existing Clients. A zero byte retained message MUST NOT be stored as a retained message on the Server。


http://www.kler.cn/a/292322.html

相关文章:

  • 蓝队技术学习
  • 鸿蒙北向开发 : hdmfs-分布式文件系统
  • 等保测评怎么做?具体流程是什么?
  • java 随机生成验证码
  • Linux 实现自动登陆远程机器
  • windows NGIMX配置WebSocket反向代理
  • tp5中怎么用redis
  • 【CSS】background样式没有生效
  • Java项目: 基于SpringBoot+mysql网上点餐系统分前后台(含源码+数据库+答辩PPT+毕业论文)
  • 第四届先进制造技术与电子信息国际学术会议(AMTEI 2024)
  • Linux: network: TCP: errno: EWOULDBLOCK
  • 视频智能分析平台LntonAIServer安防监控平台花屏检测、马赛克检测功能介绍
  • Python知识点:在Python应用中,如何使用Confluence进行文档管理
  • npm i --legacy-peer-deps
  • 数学建模强化宝典(13)M-K检验法
  • 基于 BiLSTM+Attention 实现降雨预测多变量时序分类——明日是否降雨
  • 深入剖析工厂模式与策略模式的核心差异
  • 鸿蒙(API 12 Beta6版)图形【AR物体摆放】 AR引擎服务
  • Python面向对象(14成员成员修饰符)
  • 【前端面试】Webpack、Rollup 和 Gulp 构建工具了解
  • WCDMA 辅同步信号S_SCH介绍,MATLAB实现
  • 深入理解Docker核心原理:全面解析Docker Client
  • 多线程的简单了解——多客户端链接
  • k8s工作负载控制器--Statefulset
  • 【Redis】事务主从复制哨兵集群缓存分布式锁
  • 【Linux 从基础到进阶】MongoDB 数据库安装与调优