我正在尝试在目标上试验'cursorMemoryHighWaterMark'的效果。
我有一个连接到单个队列和以下配置的单个生产者:
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="100 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="512 mb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="100 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
以及目的地上的策略条目:
<policyEntry queue=">" cursorMemoryHighWaterMark="30" />
由于内存使用量限制设置为100MB,cursorMemoryHighWaterMark设置为30,我假设将1MB非持久性消息(无使用方)推入队列,它们将一直存储在内存中,直到内存使用率达到30MB(30% 100MB),则它将开始将邮件假脱机到临时存储目录。
这要等到内存使用量达到70MB时才会发生,这与默认的cursorMemoryHighWaterMark 70一致。
我尝试过各种操作,例如启用/禁用PFC,还设置了目标本身的内存限制,但是我总是得到相同的行为。
ActiveMQ的版本是5.15.10
我不了解行为或它是配置问题,我在这里缺少什么?
谢谢。
看起来像使用fileQueueCursor做到了,然后
<policyEntry queue=">" cursorMemoryHighWaterMark="30">
<pendingQueuePolicy>
<fileQueueCursor />
</pendingQueuePolicy>
</policyEntry>