我们使用的是ActiveMQ 5.6.0和KahaDB。它产生了相当多的日志文件,这是我们的设置(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日志大小始终低于临时使用,对吗?而且,在修复了错误之后,并没有得到传递,或者还有其他的步骤需要采取?
发布于 2013-03-28 11:53:39
是的,你应该寻找storeUsage的限制。
如果队列中有未传递的消息,则无法删除日志。
解决办法是:
https://serverfault.com/questions/445073
复制相似问题