Mosquitto Persistence 文件自动清除 (mosquitto.db)

AutoClear for Mosquitto Persistence file (mosquitto.db)

mosquittodocu中描述了当设置persistencetrue时:

the data will be written to disk when mosquitto closes and also at periodic intervals as defined by autosave_interval

由于定期“转储”,mosquitto.db 文件将不断增加。如何自动清除旧数据(我不需要历史,只需要最新的值)

你没有,你的前提似乎是错误的。

文件不应该只是继续增长,当代理刷新它在内存数据库中时,它会替换磁盘上的文件,它不只是追加到末尾。

如果文件在增长,那么您的内存数据库也在增长,您有时会遇到问题。

持久性存储包含 3 个东西。

  1. 给定主题的任何保留消息的当前值。 (假设消息有一个固定的大小,那么它只会在保留的消息数量增长时增长)

  2. 持久会话数据,例如给定客户订阅了哪些主题。这将直接反映您拥有的客户数量。如果您使用随机客户端 ID,请确保将 cleanSession 设置为 false。

  3. QOS 大于 0 的任何未确认消息。它们分为 2 个子组:

    • 飞行中的高 QOS 消息,这些消息通常应该暂时保留,直到它被 broker/subscribers

      完全处理
    • 具有持续会话和高 QOS 订阅的脱机客户端的排队消息。如果您有当前处于离线状态的客户端,那么这将依赖消息 size/rate 直到客户端恢复在线(如果您认为不应该让客户端长时间离线,请参见第 2 点)

如果需要,您还可以使用 mosquitto 选项 persistent_client_expiration duration 在给定的时间长度后删除持续会话。