使用 KahaDB 进行 ActiveMQ 配置

使用 KahaDB 进行 ActiveMQ 配置

我们正在使用带有 KahaDB 的 ActiveMQ 5.6.0。它生成了相当多的日志文件,这在我们的设置(DLQ 等)中是可以预料到的,如下所示:

$ ll -h /opt/activemq/data/kahadb/
total 969M
drwxr-xr-x 2 root     root     4.0K Nov  3 12:47 ./
drwxr-xr-x 3 activemq activemq 4.0K Sep 24 12:12 ../
-rw-r--r-- 1 root     root      39M Oct 16 07:57 db-202.log
-rw-r--r-- 1 root     root      38M Oct 16 07:57 db-203.log
-rw-r--r-- 1 root     root      33M Oct 17 08:12 db-238.log
...

当我们达到 1GB 的临时使用限制时,不再处理任何消息。或者这就是我们的假设,对吗?

配置如下:

<systemUsage>
    <systemUsage>
        <memoryUsage>
            <memoryUsage limit="512mb"/>
        </memoryUsage>
        <storeUsage>
            <storeUsage limit="3 gb"/>
        </storeUsage>
        <tempUsage>
            <tempUsage limit="1 gb"/>
        </tempUsage>
    </systemUsage>
</systemUsage>

清理日志文件并远低于限制后,AMQ 仍然没有消费任何消息。只有当我们手动清除路由时,消息才会再次开始传递。

所以我们需要确保 KahaDB 日志大小始终低于临时使用量,对吗?修复该问题后交付仍未完成,这是错误还是还有其他步骤需要采取?

答案1

是的,您应该查看 storeUsage 限制。

如果队列中有未送达的消息,则无法删除日志。

解决方案如下:

相关内容