2

私は ActiveMQ 5.7.0 を使用しており、キューの宛先が特定のメモリしきい値に達した場合に fileQueueCursor を一時ストアにスピルさせたいと考えています。永続性を有効にしたくありません。

私はdestinationPolicyを設定しました:

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

また、テスト用に低い memoryUsage で 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 トランスポート: tcp:///127.0.0.1:63223@61616] [org.apache.activemq.usage.Usage:fireEvent] [Usage.java:245] [ ] [] [] - default:memory:queue://testReq:memory: 使用量の変更: 使用可能なメモリの 69% から: 使用可能なメモリの 70%

AMQ の FilePendingMessageCursor.flushToDisk() が約 70% のメモリ使用量で呼び出されることに気付きましたが、「store」メンバーが null であるため、コードは実行されません。

永続性を有効にすると、ストアは null ではなく、flushToDisk() が完了します。

永続性を有効にせずに一時ストアを設定することはできますか?

4

0 に答える 0