为什么在从 KahaDB 中删除 db-*.log 文件后 ActiveMQ 不显示并且控制台仍然显示消息

Why ActiveMQ doesn't and console still shows messages after deleting db-*.log files from KahaDB

我正在使用 KahaDB 作为持久存储来在 ActiveMQ 5.16.4 中保存消息。

<persistenceAdapter>
    <kahaDB directory="${activemq.data}/kahadb"
            checkForCorruptJournalFiles="true"
            checksumJournalFiles="true"
            ignoreMissingJournalfiles="true"
    />
</persistenceAdapter>

我正在发送持久消息,然后当代理 运行 我正在删除应该保存队列消息的 KahaDB 日志文件(下图中的 db-1.log)。但是,删除日志文件似乎没有任何作用。在 ActiveMQ 控制台中,我仍然看到持久消息,而且我还可以发送更多消息,这些消息会被连接的消费者从 Spring 启动应用程序中获取。我认为删除这些日志文件将摆脱队列中待处理的消息或破坏 ActiveMQ。知道为什么它没有发生吗?

KahaDB 文件夹内:

ActiveMQ 不会像 SQL 数据库那样对待 KahaDB,在运行时存储和检索消息。一般来说,ActiveMQ 将其​​所有消息 保存在内存 中,它使用 KahaDB 是一个 journal 来存储消息,如果代理,它将重新加载到内存中失败或以管理方式重新启动。删除 KahaDB 的底层数据不会影响代理内存中的内容,而且您一开始就不清楚为什么要这样做。

如果您想在运行时从队列中删除消息,您可以通过 Web 控制台进行管理。删除 KahaDB 日志文件不是推荐的方法。