我使用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文件夹中:

发布于 2022-03-01 16:03:24
ActiveMQ不像在运行时存储和检索消息的SQL数据库那样对待KahaDB。一般来说,ActiveMQ将其所有消息保存在内存中,并且它使用KahaDB是一个日志,用于存储消息,如果代理失败或通过管理方式重新启动,它将重新加载到内存中。删除KahaDB的底层数据不会影响代理内存中的内容,也不清楚为什么首先要这样做。
如果要在运行时从队列中删除消息,可以通过web控制台进行管理。删除KahaDB日志文件是而不是--这是建议的方法。
https://stackoverflow.com/questions/71310623
复制相似问题