用于持久消息的 Kaha DB 消息存储库



我知道db-xx.log是日志文件,db.redo是参考文件?

db-xx.log存储尚未使用的消息。这些消息将在使用后从 db-xx 中删除.log。db.redo 按消息 ID 存储消息的引用(存储在 db-xx.log 中)。

  1. 但是,什么是db.data和db.free?
  2. 它们的功能是什么?

我的理解是,代理首先将消息存储在缓存(即易失性内存)中,然后在检查点或缓存大小已满时.log将这些消息移动(追加)到 db-xx。

  1. 这是对的吗?

谢谢

db.data 保存引用未消费消息的 btree 页面。 db.redo 是即将对 db.data 执行的更新的重做日志。 db.free 跟踪 db.data 中的免费页面。

db.redo 是索引的恢复文件 (db.data)。db.free 在 activeMQ 启动期间被读取并加载到内存中。将空闲列表加载到内存后,该文件将被删除。卸载消息数据库后,空闲列表将写回 db.free。

删除消息后,队列/主题的行为会有所不同。

  • 如果是队列,它将从索引文件中删除。B树结构将相应修改。
  • 在主题的情况下,只有当消息被所有订阅者确认时,它才会被删除。

最新更新