Назад | Перейти на главную страницу

Настройка ActiveMQ с KahaDB

Мы используем 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
...

Сообщения больше не обрабатывались, когда мы исчерпали временный лимит в 1 ГБ. Или это то, что мы предполагаем, верно?

Конфигурация выглядит так:

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

После очистки файлов журналов и превышения установленных лимитов AMQ по-прежнему не обрабатывал сообщения. Только когда мы вручную очистили маршрут, сообщения снова начали доставляться.

Итак, мы должны гарантировать, что размер журнала KahaDB всегда остается ниже временного использования, верно? И эта доставка не была получена после исправления ошибки, или нужно ли предпринять какие-либо другие шаги?

Да, вам следует поискать ограничение storeUsage.

Если у вас есть недоставленные сообщения в очередях, журналы не могут быть удалены.

Решения:

  • поднять лимит использования магазина;
  • следите за своими очередями и удаляйте из них сообщения;
  • установить срок действия сообщения (http://activemq.apache.org/manage-durable-subscribers.html).