2016-01-29 52 views
-1

我正在使用ActiveMQ,其中生產者位於PHP,消費者位於JAVA。我使用STOMP將PHP連接到AMQ。 總共發送了10,000條消息。 考慮JAVA用戶關閉的情況,即沒有消費者可用消費該消息。 當我在本地系統上嘗試這種情況時,在3000條消息之後,ActiveMQ拋出一個Java.MemoryOutOfBound異常。將消息存儲在內存而不是JVM上 - ActiveMQ

所以我想到的解決方案很少: 1. ActiveMQ可以通過哪種方式將消息存儲在KahaDB而不是內存中? 2.是否可以嘗試任何系統調整(已嘗試將Java Heap大小增加到3GB,我能夠發送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 ...但仍然面臨問題... –

相關問題