普通消息:普通消息在发送之前其所对应的主题如果不存在订阅者,普通消息MQTT服务器会直接将其丢弃。
保留消息:保留消息可以保留在 MQTT 服务器中。任何新的订阅者订阅与该保留消息中的主题匹配的主题时,都会立即接收到该消息,即使这个消息是在它们订阅主题之前
发布的。
当客户端订阅主题时,如果服务端存在该主题匹配的保留消息,则该保留消息将被立即发送给该客户端。
保留消息的常见使用场景:
1、智能家居设备的状态只有在变更时才会上报,但是控制端需要在上线后就能获取到设备的状态;
2、传感器上报数据的间隔太长,但是订阅者需要在订阅后立即获取到最新的数据;
3、传感器的版本号、序列号等不会经常变更的属性,可在上线后发布一条保留消息告知后续的所有订阅者;
发布保留消息
在发布消息的时候将Retained 标记被设置为 true
,则该消息即是 MQTT 中的保留消息(Retained Message)。
注意事项:
1、可以通过Dashboard查看保留消息
2、MQTT 服务器会为每个主题存储最新一条保留消息
3、在保留消息发布前订阅主题,将不会收到保留消息。需要待保留消息发布后,重新订阅该主题,才会收到保留消息。
保留消息的存储方式
保留消息的存储方式:内存存储(默认存储类型)、磁盘存储
5、保留消息虽然存储在服务端中,但它并不属于会话的一部分。也就是说,即便发布这个保留消息的会话已结束,保留消息也不会被删除。
保留消息的删除方式
1、客户端往某个主题发送一个 Payload 为空的保留消息,服务端就会删除这个主题下的保留消息;
2、在 MQTT 服务器上删除,比如 EMQX MQTT 服务器提供了在 Dashboard 上删除保留消息的功能;
3、MQTT 5.0 新增了消息过期间隔属性,发布时可使用该属性设置消息的过期时间,将会在过期时间后自动被删除。
c#中string和StringBuilder直接看看执行速度。(2).String类型累计赋值Test  ...
Application 对象用于存储和访问来自任意页面的变量,类似 Session 对象。不同之处在于所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。很多的书籍中介绍的Application对象都喜欢以统计在线人数来介绍Application 对象...
日志查看:git log版本切换:方式1:git reset --hard HEAD^ 倒退一个版本git reset --hard HEAD^^ 倒退两个版本方式2:(版本号的形式,建议版本号码补充完...
1.关机Process.Start("shutdown", "-s -t 0"); 2. 注销 Proc...
public static string GetMD5(string str) { //创建MD5对象 MD5 md5 = MD5.C...
private const string fantizi = "高久峰是個程序員"; private const string jiantizi = "高久峰是个程序员...