是否有用于保留重复消息的 Mosquitto 设置

Is there a Mosquitto setting for retaining duplicate messages

使用 Mosquitto 代理,我有一个发布者,有时可能会向不同的客户发送重复的消息主题。客户端是并不总是在线的设备,因此当它们连接到代理时,它们需要能够获取所有已保留的消息。我们观察到,当客户端连接时,所有消息都会流过,但如果它断开连接然后重新连接,则只有最新的消息副本到达。

我们的设置是 Qos 1 和 retain = true。 conf 设置没有 allow_duplicate_messages 所以默认为真。

我们可以做些什么来保留所有消息。

您混淆了持久会话的保留消息。

当客户端正常重新连接时,只有发布的带有保留位设置的最后一条消息才会被传送。

如果您想在客户端离线时发送所有消息(无论设置了保留位),那么您需要使用持久会话。

可以找到持久会话的详细描述here,但简短版本如下:

您需要在连接时将 clean_session 连接选项设置为 false 两次(初始连接和重新连接)