MQTT遗嘱信息(1)

本文内容参考:

什么是MQTT遗嘱消息?如何配置和处理遗嘱消息?_mqtt last will-CSDN博客

【MQTT基础篇(十五)】MQTT遗嘱_last-will qos-CSDN博客

MQTT 协议学习:Retained(保留消息) 与 LWT(最后遗嘱)

特此致谢!

MQTT在笔者的相关文章中以及介绍过了,这里只再简单说一下。MQTT的英文全称为Message Queuing Telemetry Transport,中文译为消息队列遥测传输。MQTT是一种轻量级的消息传输协议,被广泛应用于物联网和传感器网络中。

简要介绍完了MQTT,来看今天的主角 —— MQTT遗嘱信息。

1. 遗嘱消息的概念

遗嘱消息的英文全称为Last Will and Testament,简称LWT。在MQTT中,遗嘱消息是一种特殊类型的消息,用于在客户端异常断开连接时向其他订阅者通知其离线状态或执行一些预定义操作。

遗嘱消息是在客户端连接到MQTT代理服务器(MQTT Broker)时,客户端通过设置遗嘱消息选项来指定的一条消息,说得更明白一些,就是我们在连接到Broker时提到的遗嘱,包括遗嘱主题、遗嘱QoS、遗嘱消息等。当客户端异常断开连接时(例如网络故障或客户端崩溃),MQTT代理会自动将该遗嘱消息发布给其他订阅者。遗嘱消息的目的是提供一种机制,使得其他订阅者能够得知客户端的离线状态,或者执行一些预定义的操作。

遗嘱消息由以下几个关键属性组成:

  • 主题(Topic)

遗嘱消息需要指定一个主题,用于标识遗嘱消息的内容。

  • 负载(Payload)

遗嘱消息可以包含任意的负载数据,用于传递有关客户端的状态或其它信息。

  • QoS(Quality of Service)

遗嘱消息的发布可以选择不同的QoS级别,以确保可靠的消息传递。

  • 保留(Retained)

遗嘱消息可以选择保留,这意味着新的订阅者在订阅该主题时将收到最近的遗嘱消息。

遗嘱消息的配置是可选的,每个客户端可以根据自己的需求选择是否设置遗嘱消息。当客户端连接到MQTT代理时,可以通过设置遗嘱消息选项来指定遗嘱消息的内容和属性。

2. Retain的详细介绍

关于保留(Retained)一项,详细说明一下。假设有这样一个场景:

有一个温度传感器,它每三个小时向一个 Topic 发布当前的温度。那么问题来了,有一个新的订阅者在它刚刚发布了当前温度之后订阅了这个主题,那么这个新的订阅端必须等到三个小时以后,才能收到温度传感器再次发布消息的时候。在这之前,这个新的订阅者对传感器的温度数据一无所知。

那么怎么解决这个问题?这个时候就轮到Retained消息出场了。Retained消息是指在PUBLISH数据包中Retain标识设为1的消息,Broker收到这样的PUBLISH包以后,将保存这个消息,当有一个新的订阅者订阅相应主题的时候,Broker会马上将这个消息发送给订阅者。

Retain消息有以下一些特点:

  • 一个Topic只能有1条Retained消息,发布新的Retained消息将覆盖老的Retained消息;

  • 如果订阅者使用通配符订阅主题,它会收到所有匹配的主题上的Retained消息;

  • 只有新的订阅者才会收到Retained消息。如果订阅者重复订阅一个主题,也会被当做新的订阅者,然后收到 Retained 消息;

  • Retained消息发送到订阅者时,消息的Retain标识仍然是1,订阅者可以判断这个消息是否是 Retained消息,以做相应的处理

如果想要删除一个Retained消息也很简单,只需要向这个主题发布一个Payload长度为0的 Retained消息就可以了。

这样,这一场景的解决方案就很简单了,温度传感器每 3 个小时发布当前的温度的Retained消息,那么无论新的订阅者什么时候进行订阅,它都能收到温度传感器上一次发布的数据。

3. 遗嘱消息的用途

遗嘱消息在MQTT中具有多种用途,以下是其中一些常见的应用场景:

(1)状态通知

客户端可以设置一个遗嘱消息来通知其他订阅者其在线或离线状态。当客户端正常断开连接时,代理会发布遗嘱消息,告知其他订阅者该客户端已经离线。

(2)资源释放

某些场景下,客户端连接异常断开时可能需要释放所占用的资源或执行清理操作。通过设置遗嘱消息,客户端可以指示代理在其断开连接时执行相应的资源释放或清理操作。

(3)信息传递

遗嘱消息可以携带有关客户端的信息,例如设备的状态、位置或其他重要数据。当客户端断开连接时,这些信息可以被传递给其他订阅者,以便及时了解客户端的状态或其他相关信息。

更多MQTT遗嘱消息机制的介绍和讲解,请看下回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纯干货丨知乎广告投放流程和避坑攻略

精准有效的广告投放企业获客的关键,知乎作为中国最大的知识分享平台,拥有着高质量的用户群体和高度的用户粘性,为广告主提供了独一无二的品牌传播与产品推广平台。然而,如何在知乎上高效、精准地进行广告投放,避免不必…

pdf转换成cad,这几个cad转换小妙招快码住!

在数字设计领域,PDF(Portable Document Format)和CAD(Computer-Aided Design)文件格式各有其独特之处。PDF常用于文件共享和打印,而CAD则是工程师和设计师们进行精确绘图和建模的必备工具。然而&#xff0c…

谷粒商城P62 Spring Cloud Alibaba整合 OSS 报错问题(成功解决)

文章目录 一、依赖版本二、整合步骤2.1 视频 / 旧版本2.2 官网 / 新版本 三、product测试四、额外补充4.1 renren-fast报错4.2 解决方案4.2.1 视频 / 旧版本4.2.2 官网 / 新版本 最近在学习谷粒商城,一直卡在P62,SpringCloud Alibaba整合OSS报错&#xf…

word图题表题公式按照章节编号(不用题注)

预期效果: 其中3表示第三章,4表示第3章里的第4个图。标题、公式编号也是类似的。 为了达到这种按照章节编号的效果,原本可以用插入题注里的“包含章节编号” 但实际情况是,这不仅需要一级标题的序号是用“开始->多级列表”自动…

SQL注入漏洞—SQL注入简介与原理

一、SQL注入基础 1.1 什么是SQL注入漏洞 SQL注入漏洞从1998年圣诞节大火以来长盛不衰,虽然开发人员想出各种方法对他进行围追堵截,却始终无法将其赶尽杀绝,SQL注入的根本原因就是将SQL代码插入或添加到应用(用户)的输…

Transformer教程之什么是Transformer

在过去的几年里,Transformer 模型已经成为了自然语言处理(NLP)领域的主流技术。无论是机器翻译、文本生成还是语音识别,Transformer 都表现出了非凡的性能。那么,什么是 Transformer?它是如何工作的&#x…

WPF----进度条ProgressBar(渐变色)

ProgressBar 是一种用于指示进程或任务的进度的控件,通常在图形用户界面(GUI)中使用。它提供了一种视觉反馈,显示任务的完成程度,帮助用户了解任务的进展情况。 基本特性 Minimum 和 Maximum 属性: 这些属…

猫也有自动厕所上了吗?自费分享好用的智能猫砂盆,看完不亏。

还有人在用普通猫砂盘吗?之前我也是用的普通猫砂盘,但我发现只要我在上班时间,我就无法顾忌到小猫的便便,但又不想回家就闻到一股臭味,更何况现在夏天也快到了,便便残留一会就会发酵发臭,导致生…

求出某空间曲面下的体积

求出某空间曲面下的体积 flyfish 用小长方体的体积和来逼近该体积 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation# 定义函数 f(x, y) def f(x, y):return np.sin(np.pi * x) * np.sin(np.pi * y)# 创建网格 x np.linspac…

postgre事务id用完后,如何解决这个问题

在PG中事务年龄不能超过2^31 (2的31次方2,147,483,648),如果超过了,这条数据就会丢失。 PG中不允许这种情况出现,当事务的年龄离2^31还有1千万的时候,数据库的日志中就会 有如下告警: warning:…

安全感爆棚,锁定六氟化硫SF6气体泄漏报警监测系统

一、概述 六氟化硫SF6气体已有百年历史,它是法国两位化学家Moissan和Lebeau于1900年合成的人造惰性气体, 1947年提供商用。当前SF6气体主要用于电力工业中。化学性质稳定。微溶于水、醇及醚,可溶于氢氧化钾。不与氢氧化钠、液氨、盐酸及水起…

常见的Java开发难题包含解决办法内存泄漏异常处理代码质量和维护

常见的Java开发难题包含解决办法内存泄漏异常处理代码质量和维护 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 I…

实践案例:使用Jetpack Navigation创建一个新闻应用

在这个实践案例中,我们将使用Jetpack Navigation创建一个简单的新闻应用。这个应用将包含以下功能: 新闻列表页面:显示一组新闻文章。新闻详情页面:显示选定新闻文章的详细信息。用户资料页面:显示用户的资料信息。 …

从爬取到分析:Faraday爬取Amazon音频后的数据处理

什么是Faraday? Faraday是一个简单、灵活的高级爬虫框架,支持多种编程语言。它提供了一套丰富的API,允许开发者快速构建复杂的爬虫应用。Faraday的主要特点包括: 模块化设计:易于扩展和自定义。多语言支持&#xff1…

Vite 动态导入警告问题解决方案

如上图我要实现从后台获取权限菜单并动态导入进行渲染 但由于 vite 暂时不支持这种导入方式 图中也给出了提示 本人也是这么去做了 但并没什么卵用 后来参考了 vite 的 import.meta.glob 这种方式 我在处理菜单权限控制的菜单里进行了如下操作: …

【网络架构】lvs集群

目录 一、集群与分布式 1.1 集群介绍 1.2 分布式系统 1.3 集群设计原则 二、LVS 2.1 lvs工作原理 2.2 lvs集群体系架构 ​编辑 2.3 lvs功能及组织架构 2.4 lvs集群类型中术语 三、LVS工作模式和命令 3.1 lvs集群的工作模式 3.1.1 lvs的nat模式 3.1.2 lvs的dr模式 …

从此以后,将硬件接入大语言模型(LLM)将变得如此简单~

一、前言 本文中将使用ESP-AI开源库来实现将硬件接入AI,整个过程将非常的轻松~ 什么是ESP-AI? 为你的开发板提供全套的AI对话方案,包括但不限于 ESP32 系列开发板的 IATLLMTTS 集成方案。 交流群 QQ 交流群: 854445223 技术栈 ESP-AI 分为了服务端和…

001 ElasticSearch7.x 、IK分词器、Kibana 环境搭建、安装

ElasticSearch 7.x 文章目录 ElasticSearch 7.x1.windows环境安装1.ik分词器安装2.es启动3.Kibana启动 2.Linux环境安装3.分词器1.分词测试2.ES中默认分词器3.IK分词器4.自定义分词器 1.windows环境安装 es下载地址: https://www.elastic.co/cn/downloads/past-rel…

超声波清洗机洗眼镜效果好吗?四大主流超声波清洗机终极大测评

清洗眼镜是日常生活中一件很麻烦的事情,常规的清洗方式无法完全清洁镜片上的细菌和污垢,而且容易造成划痕。也有很多朋友为了节省时间,每次清洗眼镜都用衣服衣角随便擦拭擦拭就完事了,但其实这样做往往会很伤眼镜,缩短…

矩阵新玩法,云微客AI矩阵系统开启新营销大门

在激烈的市场竞争中,商家企业们都在追求更加高效的营销方式,在如今流量至上的时代,短视频凭借其魅力,成为了众多企业吸引流量、获客引流的核心营销途径。而想要挤进短视频流量圈的你,是否经常听到矩阵这个词呢&#xf…