Hello, It looks like there is a mismatch in the documentation. From piece 1 (below) I understand that messages would be shunted into the temporary file even if producerFlowControl=true, but from piece 2 it sounds like it only would happen if producerFlowControl=false
Piece 1 https://activemq.apache.org/producer-flow-control.html Note that, since the introduction of the new file cursor in ActiveMQ 5.x, non-persisted messages are shunted into the temporary file store to reduce the amount of memory used for non-persistent messaging. As a result, you may find that a queue’s memoryLimit is never reached, as the cursor doesn’t use very much memory. If you really do want to keep all your non-persistent messages in memory, and stop producers when the limit is reached, you should configure the <vmQueueCursor> Piece 2 https://activemq.apache.org/per-destination-policies producerFlowControl - If true the broker will throttle (flow-control) the producer. Throttling is achieved either by withholding the producer’s ACK or by raising a javax.jms.ResourceAllocationException (that’s propagated back to the client) when local resources, e.g., memory and/or storage, have been exhausted. If false excess messages will be written to the message store to prevent memory exhaustion. However, when the message store reaches capacity the producer will be throttled until resources are freed. Best regards, Daniel
