如何在ActiveMQ 上模拟一个"Full Queue"?

How to simulate a "Full Queue" on ActiveMQ?

我们最近在 ActiveMQ 运行 系统资源不足时在测试环境中遇到了一些问题。

如何在本地模拟这种情况以重现问题并测试可能的修复?

我设法通过更改 ActiveMQ 配置来模拟场景。

您可以在 ActiveMQ 的配置文件中设置可用的系统资源,您可以在 ActiveMQ 安装目录的 libexec/conf/activemq.xml 找到该文件。

例如,您可以更改默认值:

  <systemUsage>
    <systemUsage>
        <memoryUsage>
            <memoryUsage percentOfJvmHeap="70" />
        </memoryUsage>
        <storeUsage>
            <storeUsage limit="100 gb"/>
        </storeUsage>
        <tempUsage>
            <tempUsage limit="50 gb"/>
        </tempUsage>
    </systemUsage>
  </systemUsage>

改为小值:

  <systemUsage>
    <systemUsage>
        <memoryUsage>
            <memoryUsage percentOfJvmHeap="1" />
        </memoryUsage>
        <storeUsage>
            <storeUsage limit="512 kb"/>
        </storeUsage>
        <tempUsage>
            <tempUsage limit="512 kb"/>
        </tempUsage>
    </systemUsage>
  </systemUsage>

运行 或重新启动 ActiveMQ,它应该会很快填满。

ActiveMQ 文档中的更多信息:http://activemq.apache.org/producer-flow-control.html