1

activeMQ で非アクティブなキューをパージしようとしています

<amq:broker persistent="true" useJmx="true" schedulePeriodForDestinationPurge="1000">
    <amq:destinationPolicy>
        <amq:policyMap>
            <amq:policyEntries>
                <amq:policyEntry queue="queue.>" gcInactiveDestinations="true" inactiveTimoutBeforeGC="5000" />
            </amq:policyEntries>
        </amq:policyMap>
    </amq:destinationPolicy>

私が読んだように、メッセージが0で、新しいプロデューサー/コンシューマーがない場合、キューは非アクティブです。

次のような送信プロセスに jmsTemplate を使用しています。

//Creates an org.springframework.jms.connection.CachingConnectionFactory
conn = jmsTemplate.getConnectionFactory().createConnection(); 
session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
...
jmsTemplate.convertAndSend(destinationQueue, messageDTO);
....
session.close();
conn.close();

convertAndSend メソッドが呼び出された時点で、プロデューサーとキューが作成されますが、送信が完了すると、プロデューサーはまだ生きています (jconsole は ProducerCount=1 を示します) が、セッションと接続を閉じてキューが削除されないようにします。

プロデューサーが削除されないのはなぜですか? cachingconnectingfactory の使用に影響がありますか?

ありがとう!

4

1 に答える 1