『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 246|回复: 0

[技术探讨] 请教MQTT怎样发送“保证仅收到一次”的消息?

[复制链接]

39

主题

182

帖子

799

积分

高级会员

Rank: 4

积分
799
金钱
617
HASS币
0
发表于 2024-5-12 11:51:35 | 显示全部楼层 |阅读模式
本帖最后由 inevitab 于 2024-5-12 12:01 编辑
MQTT 协议提供了 3 种消息服务质量等级(Quality of Service),保证了在不同的网络环境下消息传递的可靠性。
  • QoS 0:消息最多传递一次。
    如果当时客户端不可用,则会丢失该消息。发布者发送一条消息之后,就不再关心它有没有发送到对方,也不设置任何重发机制。
  • QoS 1:消息传递至少 1 次。
    包含了简单的重发机制,发布者发送消息之后等待接收者的 ACK,如果没收到 ACK 则重新发送消息。这种模式能保证消息至少能到达一次,但无法保证消息重复。
  • QoS 2:消息仅传送一次。
    设计了重发和重复消息发现机制,保证消息到达对方并且严格只到达一次。

QoS 2 是不是必须要接收端在线才行?

设备A订阅了主题abc,在home assistant里给abc主题发送一条消息(此时A可能是在线也可能是离线也可能是网络很差),怎样才能确保A一定能收到并且只收到一次这条消息?测试了用QoS 2不行。






屏幕截图 2024-05-12 120108.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-6-2 15:53 , Processed in 4.382103 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表