将消息存储在内存而不是JVM-ActiveMQ上

时间:2016-01-29 16:43:43

标签: java php out-of-memory activemq stomp

我正在使用ActiveMQ,其中生产者是PHP,消费者是JAVA。我正在使用STOMP将PHP连接到AMQ。 总共发送10,000条消息。 考虑JAVA订户关闭的情况,即没有消费者可用于消费该消息。 在我的本地系统上尝试这种情况时,在3000条消息之后,ActiveMQ会抛出Java.MemoryOutOfBound异常。

所以我想到的解决方案很少: 1. ActiveMQ有什么方法可以将消息存储在KahaDB而不是内存中? 2.我可以尝试任何系统调整(已经尝试将Java堆大小增加到3GB,我能够发送9000条消息但是在同样的错误之后),任何可以启用或禁用的ActiveMQ选项都可以提供帮助。 3.比我想到的更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

查看ActiveMQ文档,您可以将代理切换为持久使用KahaDB购买配置

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

根据您的情况,您可以应用许多选项进行调整,请查看

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