MQTT-遗嘱消息

遗嘱消息

简介

MQTT中,客户端可以在连接时在服务端中注册一个遗嘱消息.与普通消息类似,我们可以设置消息主题、有效载荷等等。当客户端意外断开,服务端就会向其他订阅客户端发送此遗嘱消息,这些接收者可及时地采取相应的操作。例如:向用户发送通知、切换备用设备等等。

作用

借助遗嘱消息可以感知到客户端是意外断开

原理

指定时机

  • 客户端发起连接时指定

消息

  • 消息内容

与普通消息类似,可以为遗嘱消息设置主题(Will Topic)、保留消息标识位(Will Retain)、属性(Will Properties)、QoS(Will QoS)和有效载荷(Will Payload)。

在这里插入图片描述

  • 普通消息差异
    • 不能指定主题别名
    • 需要配置 Will Delay Interval

在这里插入图片描述

Will Delay Interval

作用决定了服务端将在网络连接关闭后延迟多久发布遗嘱消息,单位: 秒。

  • 没有指定 Will Delay Interval 或 设置为 0

默认情况即如此,服务端会在网络连接意外断开时立即发布遗嘱消息

  • 设置为一个大于 0 的值
    • 若客户端在 Will Delay Interval 时间内恢复连接,则不发布遗嘱消息
    • 反之,才会向其他订阅客户端发送此遗嘱消息

遗嘱消息与会话

  1. 遗嘱消息是会话状态的一部分
  2. 会话结束,遗嘱消息也无法继续单独存在
  3. 在遗嘱消息延迟发布期间,会话可能过期; 若过期则发布遗嘱消息
  4. 客户端在新的连接中设置Clean Start 为 1(服务端需要丢弃之前的会话);避免丢失遗嘱,即便 Will Delay Interval 还没有到期,服务端也会发布遗嘱消息

何时发布遗嘱消息:取决于 Will Delay Interval 到期会话结束 这两种情况 谁先发生

遗嘱演示

  • 发布者设置遗嘱消息
    • 主题 test/will
    • 消息内容
    • 间隔时间 20s

在这里插入图片描述

  • 创建订阅者
    • 订阅主题 test/will

在这里插入图片描述

  • 模拟意外断开

关闭发布者,右键打开新窗口

在这里插入图片描述

新窗口建立连接后 直接关闭窗口

在这里插入图片描述

订阅者消息查看

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜逼の世界

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

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

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

打赏作者

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

抵扣说明:

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

余额充值