5

maxPageSize をデフォルトの 200 よりも大きな数値に設定したいと思います。

これは、activemq.xml ファイルで設定する方法です。

<destinationPolicy>
            <policyMap>
              <policyEntries>
              ---
                <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb" maxPageSize="SOME_LARGE_NUMBER">
                </policyEntry>
              </policyEntries>
            </policyMap>
        </destinationPolicy>

この変更により、QueueBrowser.getEnumeration() を使用してキュー内のメッセージ数を取得できます。これは、キュー内のメッセージ数が 200 を超えていても 200 を返すためです。

QueueBrowser.getEnumeration()については、http: //docs.oracle.com/javaee/1.4/api/javax/jms/QueueBrowser.htmlを参照してください。

maxPageSize を 200 から 1000 に変更した場合の副作用は何ですか? とにかくブローカーのパフォーマンスに影響しますか?

このページの「一度にストアからページへの永続メッセージの最大数」以外に、このプロパティに関するドキュメントはありません。

http://activemq.apache.org/per-destination-policies.html

御時間ありがとうございます!

4

1 に答える 1

4

最大ページ サイズは単にメモリにロードされるメッセージの数を示しているため、より多くのメモリを消費するという影響があります。

ただし、行間を読むと、これを行っている理由はアンチパターンです。アプリケーションの一部としてのキュー ブラウジングは、実際にはメッセージングの誤用です。メッセージ キューは、キューとして扱われる場合に最適に機能します。先入先出。メッセージが到着したかどうかを確認するためにスキャンする配列としてではありません。

各メッセージを消費する方がはるかに優れています。次のいずれかです。

  1. ペイロードに応じて他のキューの束にそれらをソートし、その第 2 レベルのキューを別の方法で処理する、または
  2. ペイロードをデータベースに保存し、コンテンツに基づいて選択します。
于 2013-05-23T07:50:38.057 に答える