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系统时,考虑到遗嘱消息的设置和处理,可以提高系统的可靠性、弹性和可管理性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值