1:关于消息发布服务质量本文地址:http://www.04007.cn/article/962.html,未经许可,不得转载.
MQTT设计了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,提供了三种不同层次QoS(Quality of Service)消息发布服务质量,也可称为Quality of Service等级,一共有3个QoS等级:
QoS0,At most once,至多一次;消息发布完全依赖底层TCP/IP 网络,会发生消息丢失或者重复,这一级别可用于如下情况,环境,传感器数据,丢失一次度记录无所谓,因为不久之后会有第二次发送;
QoS1,At least once,至少一次;确保消息到达,但消息重复可能发生;
QoS2,Exactly once,确保只有一次。确保消息到达一次,这一级别可用于如下情况,在计费系统中,消息重复或者丢失导致不正确的结果。
QoS从0到2是一个逐级严格的过程,0发了就丢掉信息,1是一定保护订阅方收到(客户端需要反馈);2是一定保证订阅方只收到一次(订阅方会临时存储消息需要与服务端确定只收到一次才推给上层应用处理)
知乎上有篇文章图示很清楚地表明了其特点:https://zhuanlan.zhihu.com/p/80203905 本文地址:http://www.04007.cn/article/962.html,未经许可,不得转载.
2:EMQ离线消息、保留消息本文地址:http://www.04007.cn/article/962.html,未经许可,不得转载.
MQTT客户端向服务器发布(PUBLISH)消息时,可以设置保留消息(Retained Message)标志。保留消息会驻留在消息服务器,后来的订阅者订阅主题时仍可以接收该消息。但要注意一个topic只能有1条Retain消息,新的Retain消息会覆盖旧的。
Send a retained message:Sending a retained message from the perspective of a developer is quite simple and straight-forward. You just need to set the retained flag of a MQTT publish message to true. Each client library typically provides an easy way to do that.本文地址:http://www.04007.cn/article/962.html,未经许可,不得转载.
3:删除Retain消息本文地址:http://www.04007.cn/article/962.html,未经许可,不得转载.
鉴于2中的特性,一个topic只有1条Retain消息,因此可以向这个topic发布一个长度为0的Retain 消息即可。另外消息服务器设置保留消息的超期时间。
Delete a retained message:There is also a very simple way for deleting a retained message on a topic: Just send a retained message with a zero byte payload on that topic where the previous retained message should be deleted. The broker deletes the retained message and all new subscribers won’t get a retained message for that topic anymore. Often deleting is not necessary, because each new retained message will overwrite the last one.本文地址:http://www.04007.cn/article/962.html,未经许可,不得转载.
最后关于cleanSession 清理回话,MQTT客户端向服务器发起CONNECT请求时,可以通过Clean Session标志设置会话。Clean Session设置为0,表示创建一个持久会话,在客户端断开连接时,会话仍然保持并保存离线消息,直到会话超时注销。Clean Session设置为1,表示创建一个新的临时会话,在客户端断开时,会话自动销毁。本文地址:http://www.04007.cn/article/962.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/962.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |