1 回答
TA贡献1155条经验 获得超0个赞
发布定义如下:
Publish(topic string, qos byte, retained bool, payload interface{}) Token因此,当您打电话时,token := client1.Publish(TOPIC, 2, true, sendMsg)您正在发布一条retained设置为 true 的消息。Retain是与消息一起传递给代理的标志,它意味着:
如果 RETAIN 标志设置为 1,则在客户端发送给服务器的 PUBLISH 数据包中,服务器必须存储应用程序消息及其 QoS,以便可以将其传递给订阅匹配其主题名称的未来订阅者 [MQTT- 3.3.1-5]。建立新订阅时,必须将每个匹配主题名称上的最后保留消息(如果有)发送给订阅者 [MQTT-3.3.1-6]。
每条带有retainset 的新消息都会替换任何以前的消息,因此当您的第一次执行完成时,消息2会被保留。这会在客户端重新连接时发送给客户端(意味着您看到的结果是预期的)。如果您更改对它的调用,token := client1.Publish(TOPIC, 2, false, sendMsg)它将按您预期的方式运行。
mosquitto 文档对标志说如下persistence:
如果为 true,则连接、订阅和消息数据将写入 mosquitto.db 中由 persistence_location 指定的位置的磁盘。当 mosquitto 重启时,它会重新加载 mosquitto.db 中存储的信息
所以这只有在你重启 Mosquitto 时才会产生影响;即使此标志设置为 ,会话信息仍将存储在内存中false。
- 1 回答
- 0 关注
- 305 浏览
添加回答
举报
