MQTTのRetainメッセージの動作は、MQTT Clientがペイロードを持つTopicを発行すると、MQTT Brokerは新しいペイロードに変更するまでこのペイロードを保持するというものである。
MQTTのRetainメッセージの利点は、Publisherが同じTopicに継続してペイロードを発行していなくても、そのTopicを購読しているSubscriberがいれば、最後に更新されたペイロードを購読することができることである。することができます。したがって、ペイロードを保持したまま同じTopicを購読しているサブスクライバーがいれば、そのサブスクライバーは最後に更新されたペイロードを取得することになる。
MQTT QoS(Quality of Service)は、MQTT Retainedメッセージに影響を与えません。
トピックからRetainフラグをクリアする方法は?
ゼロペイロードを ‘LM35’ トピックにパブリッシュすると、MQTT Broker からそのトピックの Retain フラグがクリアされます。これにより、「MqttDesk」が「LM35」トピックを購読した場合、次回「ESP32」がそのトピックに発行する際には、ペイロード以外何も取得しなくなる。