I've created a simple test to fill up a queue with messages mark with timeToLive of 60 seconds. I've added the deadletter stategy processExpired="false" so that the messages are just discarded.. When the queue exceeds persistance store size 40mb, it block as expected.. But, when the the records are discarded it never cleans up the transaction logs and unblocks.. It stays block..
Is there something Im missing here.. Below are the configs
Im using ActiveMQ 5.16.5
here are the policy entries for the persistant store
</policyEntry>
<policyEntry queue="inflight" producerFlowControl="false" optimizedDispatch="true" maxPageSize="1000" prioritizedMessages="true">
<deadLetterStrategy>
<sharedDeadLetterStrategy processExpired="false" />
</deadLetterStrategy>
</policyEntry>
Here is the storage
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="1 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="40 mb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="1 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
log after all records discarded
[pid: ][ActiveMQ Transport: ssl:///127.0.0.1:62422] 03 Mar 2023 15:16:44 WARN Queue - Usage(default:store:queue://inflight:store) percentUsage=88%, usage=46355255, limit=41943040, percentUsageMinDelta=1%;Parent:Usage(default:store) percentUsage=110%, usage=46355255, limit=41943040, percentUsageMinDelta=1%: Persistent store is Full, 100% of 41943040. Stopping producer (ID:dans-mbp.lan-62411-1677874511417-1:6:1:1) to prevent flooding queue://inflight. See http://activemq.apache.org/producer-flow-control.html for more info (blocking for: 91s)