2012-03-27 4 views
2

私はこの擬似コードをすれば、私は、ActiveMQの(5.5)に気づい:activemqの消費者は「常にキャッシュする」ようですか?

connection = new ActiveMQConnectionFactory(...) 
connection.start() 
session = connection.createSession(transacted=true, Session.AUTO_ACKNOWLEDGE) 
destination = session.createQueue(...) 
consumer = session.createConsumer(destination) 

私も1を要求する前に、消費者は、キューから要素をつかむために表示されていること。 WireFormat.cacheEnabled = falseを指定しても、

デフォルトで、消費者が「要素をつかむ」ことを防ぐ方法はありますか?

+0

あなたの接続文字列はどのようなものが見えますか?プリフェッチが原因です。 –

+0

?wireFormat.maxInactivityDuration = 0&wireFormat.cacheEnabled = false – rogerdpack

+0

'&jms.prefetchPolicy.all = 0'を追加して、それが停止するかどうかを確認してください。プリフェッチが必要ではないことを認識しておいてください。http://activemq.apache.org/what-is-the-prefetch-limit-for.html –

答えて

3

&jms.prefetchPolicy.all=0を接続文字列に追加し、それが停止するかどうかを確認します。プリフェッチポリシーのデフォルト値はかなり大きいので、これはあなたが見ている動作だと思われます。そのプリフェッチは必ずしも悪いことではありませんが

は注意してください:http://activemq.apache.org/what-is-the-prefetch-limit-for.html

+0

興味深いことに、私はキャッシュを使用しないと、かなり遅くactivemqを遅くすることができます。 – rogerdpack

関連する問題