【问题标题】:Store message on memory instead of JVM- ActiveMQ将消息存储在内存而不是 JVM-ActiveMQ
【发布时间】:2016-05-07 11:51:23
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 已经尝试过了...使用了 -maxAsyncJobs 等选项,增加了 indexCacheSize...但仍然面临问题...
    猜你喜欢
    • 2014-09-24
    • 1970-01-01
    • 2021-11-29
    • 2015-01-14
    • 2014-02-13
    • 1970-01-01
    • 2011-10-15
    • 2017-08-03
    • 2013-02-05
    相关资源
    最近更新 更多