使用ActiveMQ fileQueueCursor和临时存储而不启用持久性

时间:2013-05-10 01:07:41

标签: activemq

我正在使用ActiveMQ 5.7.0,并且如果队列目标达到某个内存阈值,则希望fileQueueCursor溢出到临时存储中。我不想启用持久性。

我已配置了destinationPolicy:

    <destinationPolicy>
        <policyMap>
            <policyEntries>
                <policyEntry queue=">">  
                    <pendingQueuePolicy>
                        <fileQueueCursor />
                    </pendingQueuePolicy>
                </policyEntry>
            </policyEntries>
        </policyMap>
    </destinationPolicy>

我还配置了具有低内存使用量的systemUsage进行测试:

    <systemUsage>
        <systemUsage>
            <memoryUsage>
                <memoryUsage limit="5 mb" />
            </memoryUsage>
            <tempUsage>
                <tempUsage limit="32 mb" />
            </tempUsage>
        </systemUsage>
    </systemUsage>

我的调试器中运行了一些代码,它们会将消息插入队列。在运行时,我可以看到有关内存使用量增加的消息:

2013-May-09 17:40:12.963 PDT DEBUG [ActiveMQ Transport:tcp:///127.0.0.1:63223 @ 61616] [org.apache.activemq.usage.Usage:fireEvent] [Usage.java: 245] [] [] [] - 默认值:内存:queue:// testReq:内存:使用率从:可用内存的69%变为:可用内存的70%

我注意到AMQ的FilePendingMessageCursor.flushToDisk()在大约70%的内存使用率下被调用,但因为'store'成员为null,所以代码不会被执行。

当我启用持久性时,存储不为null,flushToDisk()完成。

是否可以在不启用持久性的情况下设置临时存储?

0 个答案:

没有答案