MQTT遗嘱信息(2)

接前一篇文章:MQTT遗嘱信息(1)

本文内容参考:

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

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

特此致谢!

4. 设置和处理遗嘱消息

在MQTT中,设置和处理遗嘱消息涉及两个角色:发布者(客户端)和订阅者。

  • 设置遗嘱消息

作为MQTT客户端的发布者,可以通过以下步骤设置遗嘱消息:

 1)创建连接

使用MQTT客户端库或工具创建与MQTT代理(Broker)的连接。

2)设置遗嘱消息选项

在建立连接时,设置遗嘱消息的主题、负载、QoS级别和保留选项。这些选项通常通过客户端库的API或配置文件进行设置。

3)连接到代理

使用客户端库的连接功能连接到MQTT代理。

一旦客户端与代理建立连接,代理将会记录客户端的遗嘱消息设置。如果客户端在之后异常断开连接,代理将自动发布遗嘱消息给其他订阅者。

  • 处理遗嘱消息

作为MQTT客户端的订阅者,可以通过以下步骤处理遗嘱消息:

1)创建连接

使用MQTT客户端库或工具创建与MQTT代理的连接。

2)使用订阅功能订阅遗嘱消息的主题

通常,订阅主题与发布者设置的遗嘱消息主题相对应。

3)接收遗嘱消息

一旦成功订阅主题,订阅者将接收到发布者的遗嘱消息。根据需要,可以处理遗嘱消息中的负载数据或执行相应的操作。

订阅者可以根据实际需求对接收到的遗嘱消息进行解析和处理,以满足特定的业务逻辑和应用需求。

5. 遗嘱消息底层机制

前文已提到,LWT全称为Last Will and Testament,也就是我们在连接到Broker时提到的遗嘱,包括遗嘱主题、遗嘱 QoS、遗嘱消息等。顾名思义,当Broker检测到Client非正常地断开连接的时候,就会向遗嘱主题里面发布一条消息。遗嘱相关的设置是在建立连接的时候在CONNECT数据包里面的Variable header(可变头)与 Payload(有效载荷)中指定的

  • Will Flag

是1否0使用LWT。

  • Will Topic

遗嘱主题名,不可使用通配符(在CONNECT报文中的有效载荷中设置)。

  • Will Qos

发布遗嘱消息时使用的QoS等级,如果遗嘱标志(Will Flag)被设置为0,遗嘱QoS也必须设置为0(0x00)。

  • Will Retain

遗嘱消息的Retain标识。

  • Will Message

遗嘱消息内容(在 CONNECT报文中的有效载荷中设置)。

Broker在以下情况下认为Client是非正常断开连接的:

  • Broker检测到底层的I/O异常;

  • Client未能在Keep Alive的间隔内和Broker之间有消息交互;

  • Client在关闭底层TCP连接前没有发送DISCONNECT数据包(如果Client通过发布 DISCONNECT数据包断开连接,这个属于正常断开连接,不会触发LWT的机制,同时,Broker还会丢弃掉这个 Client 在连接时指定的LWT参数);

  • Broker因为协议错误关闭和Client的连接,比如Client发送了一个格式错误的MQTT数据包。

总结

MQTT遗嘱消息是一项强大而灵活的功能,为物联网和传感器网络提供了可靠的通信机制。通过合理配置和利用遗嘱消息,可以实现实时状态通知、可靠的离线处理、资源管理和信息传递等多种应用场景。在设计和实现MQTT系统时,考虑到遗嘱消息的设置和处理,可以提高系统的可靠性、弹性和可管理性。

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

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

相关文章

shark云原生-日志管理体系-filebeat

文章目录 1. deploy 文件1.1 RBAC1.2. DaemonSet1.2.1. Elasticsearch 连接信息1.2.2. Volume 1.3. ConfigMap1.3.1. 日志收集路径1.3.2. 日志事件输出目标 2. 在控制平面节点上运行Filebeat3. 查看输出3.1. 关于处理器 processors 4. 日志收集配置4.1. 手动指定日志收集路径4.…

前端生成循环数组的值

生成循环数组的值可以通过以下方式实现&#xff1a; // 定义一个函数&#xff0c;输入是数组和循环的次数 function generateCircularArray(arr, n) {// 循环n次for (let i 0; i < n; i) {// 每次都从数组尾部取一个元素&#xff0c;移除它&#xff0c;然后添加到数组头部…

基于SpringBoot前后端分离旅游出行管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

Qt 无预处理步骤的可用性探讨

在多平台GUI开发中&#xff0c;Qt库广受推崇。然而&#xff0c;对于某些开发者而言&#xff0c;Qt的预处理工具 moc&#xff08;Meta-Object Compiler&#xff09;可能成为进入Qt世界的一道门槛。本文将探讨Qt在不使用预处理工具的情况下的可用性&#xff0c;并分享社区中的一些…

聚观早报 | iPhone 16核心硬件曝光;三星Galaxy全球新品发布会

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月28日消息 iPhone 16核心硬件曝光 三星Galaxy全球新品发布会 苹果正多方下注布局AI商店 黄仁勋2024年薪酬3400…

力扣第213题“打家劫舍 II”

在本篇文章中&#xff0c;我们将详细解读力扣第213题“打家劫舍 II”。通过学习本篇文章&#xff0c;读者将掌握如何使用动态规划来解决这一问题&#xff0c;并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释&#xff0c;以便于理解。 问题描述 力扣第213题…

Zynq7000系列FPGA中的DMA控制器简介(一)

DMA控制器&#xff08;DMAC&#xff09;使用64位AXI主接口来执行与系统存储器和PL外围设备之间的DMA数据传输&#xff0c;操作频率同CPU_2x的时钟速率。传输由DMA指令执行引擎控制。DMA引擎运行在一个小指令集上&#xff0c;该指令集提供了一种灵活的指定DMA传输的方法。这种方…

深入理解Java中的类与对象:封装、继承与多态

深入理解Java中的类与对象&#xff1a;封装、继承与多态 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java编程中&#xff0c;类与对象是核心概念。类是对…

【电路笔记】-MOSFET放大器

MOSFET放大器 文章目录 MOSFET放大器1、概述2、电路图3、电气特性3.1 ** I D = F ( V G S ) I_D=F(V_{GS}) ID​=F(VGS​)**特性3.2 I D = F ( V D S ) I_D=F(V_{DS}) ID​=F(VDS​)特性4、MOSFET放大器5、输入和输出电压6、电压增益7、总结1、概述 在前面的文章中,我们已经…

表单自定义校验获取的value为undefined(element ui)

<el-form :model"form" :rules"rules"><el-form-item label"年龄" prop"age"><el-input v-model.number"form.age"></el-input></el-form-item> </el-form> export default {data() {…

python中的线程与进程

一、线程与进程 在计算机科学中&#xff0c;理解线程和进程的区别是重要的基础知识。这些概念对于多任务操作和并发编程尤为关键。下面将详细介绍线程与进程的区别、特点和各自的使用场景。 1.1 进程&#xff08;Process&#xff09; 进程是操作系统分配资源的基本单位。每个进…

【WPF】Enum与Converter的使用

在使用场景中大家都会遇到&#xff0c;下拉列表显示汉字&#xff0c;而存储使用的是对应的value值&#xff0c;从而转换就成了一个问题&#xff0c;接下来给大家带来一套的解决方案&#xff0c;方法可能不是特别高明&#xff0c;但是很实用&#xff0c;易读易维护&#xff0c;话…

【Unity】RPG2D龙城纷争(五)关卡编辑器之地图编辑

更新日期:2024年6月25日。 项目源码:本章发布 索引 简介关卡编辑器窗口类(LevelEditor)一、定义关卡编辑器窗口类二、两种编辑模式三、地块编辑模式1.关卡模板2.打开编辑窗口3.编辑器基本属性4.地块模板5.重新生成地图6.地图刷子7.刷地块源码链接简介 关卡编辑器将是我们配…

基本的 Spring Boot 配置步骤和常见的配置项【创建,配置,日志,数据库,安全,MVC】

基本的 Spring Boot 配置步骤和常见的配置项【创建&#xff0c;配置&#xff0c;日志&#xff0c;数据库&#xff0c;安全&#xff0c;MVC】 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、…

EAK高压电阻器-引线高压电阻器-厚膜高压电阻器

描述 EAK高压电阻器是扁平高压电阻器&#xff0c;完全满足低感、稳定和精密无源元件的所有要求。 扁平高压电阻器最适合作为组装在 PCB 上的有线元件&#xff0c;但也可以用作 SMD 元件。 我们提供 HVR、HPR、HVI、HVD 和 HVS 系列的扁平高压电阻器&#xff0c;这些电阻器具…

AI+零信任 | 易安联亮相首届“矩阵杯”网络安全大赛

6月26日&#xff0c; 首届“矩阵杯”网络安全大赛 在青岛国际会议中心举行。大赛由360数字安全、华云安主办&#xff0c;赛宁网安、永信至诚、红客社区协办&#xff0c;致力于推动提升全民网络安全意识、发现顶尖安全人才、鼓励技术创新发展&#xff0c;推动安全行业共建共享…

信息系统项目管理师

1.1项目的定义及特点 项目的定义:为创造独特的产品、服务或成果而进行的临时性工作 项目的特征: 独特性: 差异化(没有完全一样的项目) 临时性: 时间临时(开始时间、结束时间) 团队临时(不同阶段可能有不同的人来参加) 渐进明细性: 成果性目标是逐步…

Cambrian-1:探索以视觉为中心的多模态LLM新纪元

一、摘要 论文&#xff1a;Cambrian-1: A Fully Open, Vision-Centric Exploration of Multimodal LLMs&#xff0c;https://arxiv.org/abs/2406.16860 主页&#xff1a;https://cambrian-mllm.github.io/ 代码&#xff1a;https://github.com/cambrian-mllm/cambrian 本文研发…

堆栈与堆内存 - C#

探索 C# 编程中内存管理的细微差别&#xff0c;区分值类型和引用类型&#xff0c;理解动态和静态内存分配&#xff0c;评估访问效率… 背景 以下是 C# 中堆栈和堆内存之间的主要区别列表。这适用于初学者和专业的 C# 开发人员。 C# 中栈和堆内存的区别 概括 现在&#xff0c…

主流电商平台API接口(天猫获得淘宝商品详情,获得淘宝app商品详情原数据 ,获得淘口令真实url API,按图搜索淘宝商品(拍立淘) API )

主流电商平台商品接口在电商企业中具有重要应用价值。通过商品接口&#xff0c;电商企业可以实现商品同步功能&#xff1a; 商品信息同步&#xff1a;通过接口可以实时同步主流电商平台上的商品信息&#xff0c;包括商品标题、价格、库存、销量等数据&#xff0c;确保企业在自…