Mqtt MOSQUITO持久性文件(mosQUITO.db)的自动清除

Mqtt MOSQUITO持久性文件(mosQUITO.db)的自动清除,mqtt,mosquitto,Mqtt,Mosquitto,在mosquito中,描述了将持久性设置为true时: 数据将在MOSQUITO关闭时写入磁盘,并且在 由autosave_interval定义的周期间隔 由于周期性的“转储”,mosquitto.db文件将持续增加。如何自动清除旧数据(我不需要历史记录,只需要最新的值)您不需要,而且您的前提似乎是错误的 文件不应该只是继续增长,当代理刷新它在内存中的数据库时,它会替换磁盘上的数据库,而不仅仅是附加到末尾 如果文件在增长,那么内存中的数据库也在增长,并且在某个时候会出现问题 持久性存储包含3种内

mosquito
中,描述了将
持久性设置为
true
时:

数据将在MOSQUITO关闭时写入磁盘,并且在 由autosave_interval定义的周期间隔


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

您不需要,而且您的前提似乎是错误的

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

如果文件在增长,那么内存中的数据库也在增长,并且在某个时候会出现问题

持久性存储包含3种内容

  • 给定主题的任何保留邮件的当前值。(假设消息具有固定大小,则仅当保留的消息数量增加时,该大小才会增加)

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

  • QOS大于0的任何未确认消息。这些分为两个子组:

    • 飞行中的高QOS消息,通常只有在代理/订阅者完全处理之前才应暂时保留这些消息

    • 具有持久会话和高QOS订阅的脱机客户端的排队消息。如果您的客户端当前处于脱机状态,则这将取决于消息大小/速率,直到客户端恢复联机(如果您认为不应该让客户端长时间处于脱机状态,请参阅第2点)


  • 如果需要,您还可以使用MOSQUITO选项持续客户端过期时间来删除给定时间长度后的持续会话。

    您不这样做,而且前提似乎是错误的

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

    如果文件在增长,那么内存中的数据库也在增长,并且在某个时候会出现问题

    持久性存储包含3种内容

  • 给定主题的任何保留邮件的当前值。(假设消息具有固定大小,则仅当保留的消息数量增加时,该大小才会增加)

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

  • QOS大于0的任何未确认消息。这些分为两个子组:

    • 飞行中的高QOS消息,通常只有在代理/订阅者完全处理之前才应暂时保留这些消息

    • 具有持久会话和高QOS订阅的脱机客户端的排队消息。如果您的客户端当前处于脱机状态,则这将取决于消息大小/速率,直到客户端恢复联机(如果您认为不应该让客户端长时间处于脱机状态,请参阅第2点)

  • 如果需要,您还可以使用MOSQUITO选项
    persistent\u client\u expiration duration
    在给定的时间长度后删除持久会话