1

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

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

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

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

  1. 那是对的吗?

谢谢

4

2 回答 2

5

db.data 包含引用未使用消息的 btree 页面。db.redo 是即将对 db.data 执行的更新的重做日志。db.free 跟踪 db.data 中的空闲页面。

于 2012-10-10T14:16:15.897 回答
2

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

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

  • 如果是队列,它将从索引文件中删除。B-tree 结构将相应修改。
  • 在主题的情况下,只有当消息被所有订阅者确认时,它才会被删除。
于 2013-02-10T05:28:12.903 回答