ActiveMQ cursorMemoryHighWaterMark无效

问题描述 投票:0回答:1

我正在尝试在目标上试验'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

我不了解行为或它是配置问题,我在这里缺少什么?

谢谢。

activemq
1个回答
0
投票

看起来像使用fileQueueCursor做到了,然后

<policyEntry queue=">" cursorMemoryHighWaterMark="30">
  <pendingQueuePolicy>
    <fileQueueCursor />
  </pendingQueuePolicy>
</policyEntry>
© www.soinside.com 2019 - 2024. All rights reserved.