文章目录

  • Retained Messages(保留的信息)
  • Send a retained message(发送保留信息)
  • Delete a retained message(删除一个保留的信息)
  • Why and when should you use Retained Messages?(为什么以及何时应使用保留信息?)

作者:HiveMQ团队
类别:MQTT要点 MQTT
发表于: 2015年3月2日


  欢迎来到MQTT要点的第八部分。这是一个由十部分组成的博客系列,介绍了MQTT协议的核心功能和概念。这篇文章介绍了保留的消息。在这篇博文的末尾,你会发现一个关于同一主题的视频。

  在MQTT中,发布消息的客户端不能保证订阅的客户端真的收到该消息。发布的客户端只能确保消息被安全地传递给代理。基本上,订阅的客户端也是如此。连接和订阅主题的客户端不能保证发布客户端何时在他们感兴趣的主题中发布消息。发布者可能需要几秒钟、几分钟或几个小时才能在某个订阅的主题中发送一条新消息。在下一条消息被发布之前,订阅的客户端完全不知道该主题的当前状态。这种情况就是保留信息发挥作用的地方。

Retained Messages(保留的信息)

  保留的消息是一个正常的MQTT消息,其保留的标志被设置为真。代理商存储最后一条保留消息和该主题的相应QoS。 每个订阅了与保留消息的主题相匹配的主题模式的客户,在他们订阅后立即收到保留消息。经纪人对每个主题只存储一条保留信息。

  如果订阅的客户端在他们订阅的主题模式中包括通配符,即使保留的信息的主题不是完全匹配的,它也会收到保留的信息。这里有一个例子。客户端A发布了一条保留信息到myhome/livingroom/temperature。过了一段时间,客户B订阅了myhome/#。客户端B在订阅myhome/#后直接收到myhome/livingroom/temperature的保留信息。客户端B(订阅的客户端)可以看到该消息是一个保留的消息,因为经纪人在发送保留的消息时,保留的标志设置为真。客户端可以决定它要如何处理保留的消息。

  保留消息帮助新订阅的客户在订阅一个主题后立即获得状态更新。保留信息消除了等待发布客户端发送下一个更新的时间。

  换句话说,一个主题的保留信息是最后一个已知的好值。保留的信息不一定是最后一个值,但它必须是保留标志设置为 "true "的最后一个信息。

  重要的是要理解,保留的消息与持久性会话无关(我们上周已经讨论过这个问题)。一旦经纪商存储了保留的信息,就只有一种方法可以删除它。继续阅读,了解如何删除。

Send a retained message(发送保留信息)

  从开发者的角度来看,发送一个保留的消息是非常简单和直接的。你只需将MQTT发布消息的保留标志设置为真。一般来说,你的客户端库提供了一个简单的方法来设置这个标志。

Delete a retained message(删除一个保留的信息)

  也有一个非常简单的方法来删除一个主题的保留信息:在你想删除以前的保留信息的主题上发送一个带有零字节有效载荷的保留信息。经纪人删除保留的信息,新的订阅者不再得到该主题的保留信息。通常情况下,甚至没有必要删除,因为每条新的保留信息都会覆盖以前的信息。

Why and when should you use Retained Messages?(为什么以及何时应使用保留信息?)

  当你想让新连接的订阅者立即收到消息时,保留消息是有意义的(不用等到发布客户端发送下一条消息)。 这对于组件或设备在单个主题上的状态更新非常有帮助。例如,设备1的状态是在主题myhome/devices/device1/status上。当使用保留信息时,主题的新订阅者在订阅后立即得到设备的状态(在线/离线)。对于以间隔、温度、GPS坐标和其他数据发送数据的客户端也是如此。如果没有保留的信息,新的订户就会在发布间隔期内被蒙在鼓里。 使用保留信息有助于立即向连接的客户提供最后的良好价值。


  我们的MQTT精华系列的第八部分就到此为止。我们希望你喜欢它。在下一篇文章中,我们将谈论一个叫做 "最后的遗嘱 "的功能。这个功能使我们有可能在客户端突然断开连接时发送最后一条消息。

  祝您有一个愉快的一周,我们希望在下一个MQTT星期一见到您!

  如果你想在每篇新文章发布后立即得到通知,请使用订阅表来注册我们的新闻通讯。如果你喜欢RSS,你可以在这里订阅我们的RSS源。

Retained Messages - MQTT Essentials: Part 8相关推荐

  1. mqtt 多个订阅者 只允许一个接收_一文读懂物联网的灵魂MQTT

    名词释义: MQTT--Message Queuing Telemetry Transport消息队列遥测传输 SUB--Subscribe订阅 PUB--Publish发布 QoS--Quality ...

  2. 阿里云搭建MQTT服务器并进行本地和服务器端联通测试

    要搭建一个能在公网上访问的MQTT服务器,不同位置的客户端可以通过公网发送信息通信 使用开源软件 mosquitto 阿里云服务器配置是Ubuntu18.04系统,到mosquitto 官网,按照说明 ...

  3. Beginners Guide To The MQTT Protocol

    原文:http://www.steves-internet-guide.com/mqtt/ Beginners Guide To The MQTT Protocol What is MQTT? MQT ...

  4. MQTT基本应用(Mosquitto+Eclipse Paho)

    本文主要介绍,MQTT 基本概念和实现方式: 1.概述 1.1MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),由IBM在1999 ...

  5. 物联网之MQTT协议详解基础篇(一)—— MQTT介绍

    MQTT: The Standard for IoT Messaging 开场白 大概是这么个背景 比如小米智能家居目前是这么个流程: 物联网设备通过家里的wifi连接到外网服务器 在外网通过米家ap ...

  6. 【MQTT 5.0】协议 ——发布订阅模式、Qos、keepalive、连接认证、消息结构

    一.前言 1.1 MQTT 协议概述 1.2 MQTT规范 二.MQTT 协议基本概念 2.1 发布/订阅模式 2.11 MQTT 发布/订阅模式 2.12 MQTT 发布/订阅中的消息路由 2.13 ...

  7. EMQ学习笔记---Clean Session和Retained Message

    MQTT会话(Clean Session) MQTT客户端向服务器发起CONNECT请求时,可以通过'Clean Session'标志设置会话. 'Clean Session'设置为0,表示创建一个持 ...

  8. MQTT初始篇笔记整理

    MQTT简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),基于TCP/IP 协议栈而构建,虽然叫消息队列遥测传输,但是她与消息队列毫无关系,她 ...

  9. 使用 MQTTnet 快速实现 MQTT 通信

    1 什么是 MQTT ? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是 IBM 开发的一个即时通讯协议,有可能成为物联网的重要组成部分.MQT ...

最新文章

  1. 【学时总结】◆学时·VIII◆ 树形DP
  2. 20220129CTF刷题-- WEB方向
  3. idea 开启Run DashBoard
  4. Bootstrap使用后笔记
  5. uBLAS——Boost 线性代数基础程序库 (二)
  6. 《Python机器学习——预测分析核心算法》——2.3 对“岩石vs.水雷”数据集属性的可视化展示...
  7. 2012中文字库简单统计与分类
  8. macOS黑苹果系统镜像恢复版安装教程
  9. TMC2226-SA:静音防抖步进驱动
  10. 为什么我的淘宝店铺动态评分清零了?
  11. 一天搞懂机器学习PPT笔记-1
  12. chrome真机调试ios
  13. Android onKeyDown事件 监听不到Home键 可以监听到back键
  14. 望海潮·无处闻三年六月歌
  15. Android学习日记(yzy):Fragment与VierPager简单实现
  16. Unity模拟经营类游戏Demo部分代码及技术总结
  17. 程序员一般都如何接私活,我也想接,有什么可行的方法吗?
  18. settext 下划线_Android TextView 添加下划线的几种方式
  19. PatchWork组织Herbminister行动武器库大揭秘
  20. android string 过滤,Android 字符串过滤器InputFilter详解

热门文章

  1. 中国首款基于苹果应用的手机导航软件
  2. java 日期和时间_java 日期与时间操作
  3. 没有特别幸运,请先特别努力
  4. 商业级智能家居开源项目分享
  5. “雷视”这道佳肴,宇视凭何做到1+1>2?
  6. 易优cms 会员系统的绑定邮箱配置,在后台哪里调 Eyoucms快速入门
  7. MATLAB 快速入门 调用函数
  8. GPS 0183协议GGA、GLL、GSA、GSV、RMC、VTG、ZDA、DTM作者:hiphopor
  9. 华南农业大学c语言实验指导答案,华南农业大学C语言程序设计实验指导书参考答案...
  10. 深度学习之数据扩充,对应生成扩充的标签文件