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>