【发布时间】:2017-12-22 10:58:27
【问题描述】:
当生产者快速发送消息时,我正在处理一个项目,并且代理应该将所有消息排入队列,但在达到内存(或其他,如最大消息数)限制时丢弃最旧的消息。我试过弄乱constantPendingMessageLimitStrategy 参数,但它似乎不起作用。是否可以通过编辑 activemq.xml 文件中的 broker 部分来实现?
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue="*.prioritized" prioritizedMessages="true" useCache="false" expireMessagesPeriod="0" queuePrefetch="1" memoryLimit="10mb" producerFlowControl="true">
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
</policyEntry>
<policyEntry queue="TestNotifications" expireMessagesPeriod="10" memoryLimit="50mb" producerFlowControl="true">
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
</policyEntry>
<policyEntry queue=">" expireMessagesPeriod="0" memoryLimit="50mb" producerFlowControl="true">
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="10"/>
</pendingMessageLimitStrategy>
</policyEntry>
<policyEntry topic=">" >
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="100"/>
</pendingMessageLimitStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
【问题讨论】: