Я работаю над ActiveMQ, где продюсер находится на PHP, а потребитель на JAVA. Я использую STOMP для подключения PHP к AMQ.
Всего отправлено 10000 сообщений.
Рассмотрим случай, когда подписчик JAVA не работает, то есть нет доступных потребителей, которые могли бы использовать сообщение.
При попытке этого случая в моей локальной системе после 3000 сообщений ActiveMQ выдает исключение Java.MemoryOutOfBound.
Поэтому я думаю о нескольких решениях:
1. Есть ли способ, с помощью которого ActiveMQ может хранить сообщения в KahaDB, а не в памяти?
2. Есть ли какие-либо системные настройки, которые я могу попробовать (я уже пытался увеличить размер кучи Java до 3 ГБ, я смог отправить 9000 сообщений, но после той же ошибки), Любые параметры ActiveMQ, которые можно включить или отключить, могут помочь.
3. Есть ли лучшее решение, чем те, о которых я думал?
Изучив документы ActiveMQ, вы можете переключить своего брокера на сохранение, используя конфигурацию покупки KahaDB
<broker brokerName="broker" ... >
<persistenceAdapter>
<kahaDB directory="activemq-data" journalMaxFileLength="32mb"/>
</persistenceAdapter>
...
</broker>
Есть много вариантов, которые вы можете применить для настройки в соответствии с вашим сценарием, посмотрите на
Других решений пока нет …