第15章 メッセージのフィルターリング

AMQ Broker は、SQL 92 式構文のサブセットに基づいて強力なフィルター言語を提供します。フィルター言語は JMS セレクターに使用されるものと同じ構文を使用しますが、事前定義された識別子は異なります。以下の表は、AMQ Broker メッセージに適用される識別子を示しています。

識別子属性

AMQPriority

メッセージの優先度。メッセージの優先度は、0 から 9 間の有効な値の整数を指定します。0 の優先度が最も低く、9 が最も高くなります。

AMQExpiration

メッセージの有効期限。値は長い整数です。

AMQDurable

メッセージが永続化されているかどうか。値は文字列です。有効な値は Durable または NonDurable です。

AMQTimestamp

メッセージが作成された時点のタイムスタンプです。値は長い整数です。

AMQSize

メッセージの encodeSize プロパティーの値。encodeSize の値は、メッセージがジャーナルで起動するスペース ( バイト単位 ) です。ブローカーは二重バイト文字セットを使用してメッセージをエンコードするので、メッセージの実際のサイズは encodeSize の半分になります。

コアフィルター式で使用される他の識別子はメッセージのプロパティーであると考えられます。JMS メッセージのセレクター構文に関するドキュメントは、Java EE API を参照してください。

15.1. フィルターを使用するようにキューを設定する

BROKER_INSTANCE_DIR/etc/broker.xml で設定するキューにフィルターを追加できます。フィルター式に一致するメッセージのみがキューに格納されます。

手順

  • filter 要素を希望の キュー に追加し、要素の値として適用するフィルターを追加します。以下の例では、フィルター NEWS='technology' がキュー technologyQueue に追加されます。

    <configuration>
      <core>
        ...
        <addresses>
            <address name="myQueue">
               <anycast>
                  <queue name="myQueue">
                    <filter string="NEWS='technology'"/>
                  </queue>
               </anycast>
            </address>
         </addresses>
       </core>
    </configuration>