2016-01-29 2 views
-1

Я работаю над ActiveMQ, где производитель находится на PHP, а потребитель находится в JAVA. Я использую STOMP для подключения PHP к AMQ. Всего отправлено 10 000 сообщений. Рассмотрим случай, когда абонент JAVA не работает, то есть нет потребителя, который мог бы потреблять сообщение. При попытке этого случая на моей локальной системе после 3000 сообщений ActiveMQ выдает исключение Java.MemoryOutOfBound.Хранить сообщение в памяти вместо JVM-ActiveMQ

Итак, я думаю о немногих решениях: 1. Есть ли способ, с помощью которого ActiveMQ может хранить сообщения на KahaDB вместо памяти? 2. Являются ли какие-либо системные твики, которые я могу попробовать (уже пытался увеличить размер Java Heap до 3 ГБ, я смог отправить 9000 сообщений, но после этой же ошибки), любые параметры ActiveMQ, которые можно включить или отключить, которые могут вам помочь. 3. Лучшее решение, чем те, о которых я думал?

ответ

0

Глядя на ActiveMQ документах, вы можете переключить брокер сохраняющегося с помощью KahaDB купить настройки

<broker brokerName="broker" ... > 
<persistenceAdapter> 
    <kahaDB directory="activemq-data" journalMaxFileLength="32mb"/> 
</persistenceAdapter> 
... 
</broker> 

Есть много вариантов, которые можно применить для настройки в соответствии со сценарием, посмотри на

http://activemq.apache.org/kahadb.html

+0

Пробовал с этим уже ... Используемые параметры, такие как -maxAsyncJobs, увеличенный indexCacheSize ... Но все еще сталкиваются с проблемой ... –

Смежные вопросы