我正在使用ActiveMQ,其中生产者是PHP,消费者是JAVA。我正在使用STOMP将PHP连接到AMQ。 总共发送10,000条消息。 考虑JAVA订户关闭的情况,即没有消费者可用于消费该消息。 在我的本地系统上尝试这种情况时,在3000条消息之后,ActiveMQ会抛出Java.MemoryOutOfBound异常。
所以我想到的解决方案很少: 1. ActiveMQ有什么方法可以将消息存储在KahaDB而不是内存中? 2.我可以尝试任何系统调整(已经尝试将Java堆大小增加到3GB,我能够发送9000条消息但是在同样的错误之后),任何可以启用或禁用的ActiveMQ选项都可以提供帮助。 3.比我想到的更好的解决方案吗?
答案 0 :(得分:0)
查看ActiveMQ文档,您可以将代理切换为持久使用KahaDB购买配置
<broker brokerName="broker" ... >
<persistenceAdapter>
<kahaDB directory="activemq-data" journalMaxFileLength="32mb"/>
</persistenceAdapter>
...
</broker>
根据您的情况,您可以应用许多选项进行调整,请查看