Activemq
使用 KahaDB 進行 ActiveMQ 配置
我們將 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 日誌大小始終低於臨時使用量,對嗎?並且在修復該錯誤後沒有收到傳遞,或者是否需要採取任何其他步驟?
是的,您應該查找 storeUsage 限制。
如果隊列中有未送達的消息,則無法刪除日誌。
解決方案是:
- 提高 storeUsage 限制;
- 注意您的隊列並從中清除消息;
- 設置消息過期(http://activemq.apache.org/manage-durable-subscribers.html)。