Producer Flow Control 和 vmQueueCursor

ActiveMQ可以开启或关闭生产者流量控制Producer Flow Control ,基本原理是producer 发送一条消息会收到broker返回的ack响应,当磁盘或内存快满的时候broker就会限制producer发送消息,让部分producer处于等待状态。

<destinationPolicy>
  <policyMap>
    <policyEntries>
      <policyEntry topic="FOO.>" producerFlowControl="false"/>
    </policyEntries>
  </policyMap>
</destinationPolicy>

 

vmQueueCursor参数主要针对非持久化消息,activemq5.0以后非持久化消息会存储在temp store磁盘空间以释放内存,如果我们希望非持久化消息全部存储在内存中,达到memorylimit后阻止producer继续发送,就可以这么使用

<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">    //memoryLimit指定单个queue分配的内存空间
  <pendingQueuePolicy>
    <vmQueueCursor/>
  </pendingQueuePolicy>
</policyEntry>

  

原文地址:https://www.cnblogs.com/Peter2014/p/8564453.html