当订阅者离线且 QOS=2 时由 mosquitto broker 发布消息存储

published message store by mosquitto broker when subscriber is offline with QOS=2

我的发布者和订阅者都连接到 QOS=2 的 mosquitto (paho) 代理,并通过 clean_session=false 保持持久会话。当我使用连接到代理的订阅者发布消息时,它成功地被订阅者接收,现在如果我断开订阅者,然后再次发布消息并连接订阅者,我将能够在我的订阅者离线时检索这些消息。

我的问题是--

  1. 当订阅者离线时,代理中是否有存储所有消息的存储。

  2. 如果是,它可以存储多长时间或多少条消息。

  3. 这种方法是否适合实时 GPS 跟踪,用户可以长时间离线(5-6 小时)大约

  4. 即使断电也能保持会话持久性。

  5. 如果我在实时 gps 跟踪中使用这种方法,它可以为可扩展应用程序处理多少流量..

  1. 是的,有一个文件(mosquitto.db)。您可以在 mosquitto.conf 文件 autosave*persistence* 选项

  2. 中控制此文件写入磁盘的位置
  3. 只要存在持久性会话并且限制为磁盘 space(对于 32 位 mosquitto 可能为 2-4gb),就会存储消息。但是无论哪种方式都是很多消息(除非你有愚蠢的大消息)

  4. 这取决于您的消息率和publishers/subscribers

  5. 的数量
  6. 是的,会话持久性保存在同一个数据库文件中,因此在 mosquitto 重新启动时保持状态

  7. 同样,这实际上取决于您有多少 publishers/subscribers 以及消息速率。