MQTT系列-保留消息
服务器每1分钟向客户端发送一条消息,这将导致一个问题。在最极端的情况下,新订户可能无法在第一时间获取信息,需要等待1分钟。这是非常不友好的体验。
如何在订阅后立即收到消息?
其实也简单。让服务器保留最后一条最新消息就行了。当发送者发送消息时,它会带来一个标志。服务器收到后,会存储消息。
保留消息的意义在于订阅者可以立即收到消息,而无需等待发布者发布下一条消息。
从开发者的角度来看,发送预留消息是最简单直接的方式。您只需要将MQTT发布消息的保留标志设置为true。每个典型的客户端库文件都提供了一种简单的方法来实现这一点。
对于paho客户端,只需在发送时使用-r参数。
paho_c_pub -t存在-连接ws://192.168.100.1:8083/mqtt-r-m " test 223334567 "
如果是mqttx客户端发送的,只需勾选retain即可。
如果您使用的是MQTT X broker,我们可以设置预留消息的存储类型,是存储在内存还是硬盘,预留数量,预留时间等等。
文件
虽然保留的消息存储在服务器中,但它不是会话的一部分。换句话说,即使发布该保留消息的会话结束,也不会删除该保留消息。
只有两种方法可以删除保留的留言:
如上所述,客户端向一个主题发送一个承载为空的预约消息,服务器会删除该主题下的预约消息。
消息过期时间间隔属性也适用于保留的消息。如果此属性由客户端设置,则保留的消息在服务器中存储超过过期时间后将被删除。
/blog/message-retention-and-message-expiration-interval-of-emqx-mqtt 5-broker
/blog/mqtt 5-功能-保留-消息
/broker/v 4.3/advanced/retained . html # % E7 % AE % 80% E4 % BB % 8B