第15章 フィルター式とメッセージセレクター
JBoss EAP の messaging-activemq
サブシステムでは、SQL 92 表現構文のサブセットに基づいた強力なフィルター言語が提供されます。
これは JMS セレクターで使用される構文と同じですが、事前定義識別子は異なります。JMS セレクター構文に関するドキュメントは、javax.jms.Message のインターフェイス Javadoc を参照してください。
filter
属性は、設定内の複数の場所に置かれます。
事前定義されたキュー。キューを事前定義する場合、キューに対してフィルター式で定義できます。フィルター式に一致するメッセージのみがキューに格納されます。次の設定スニペットは、フィルターが含まれるキュー定義を示しています。
<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> ... <queue name="myQueue" filter="FILTER_EXPRESSION" ... /> ... </subsystem>
管理 CLI でセレクターを使用してキューを作成するには、以下のようなコマンドを使用します。
jms-queue add --queue-address=QUEUE_ADDRESS --selector=FILTER_EXPRESSION
コアブリッジはオプションのフィルター式で定義でき、一致するメッセージのみがブリッジされます。以下は、
messaging-activemq
サブシステムにフィルターを持つブリッジが含まれる設定ファイルの例になります。<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> ... <bridge name="myBridge" filter="FILTER_EXPRESSION" ... /> ... </subsystem>
迂回はオプションのフィルター式で定義でき、一致するメッセージのみが迂回されます。詳細は、迂回 を参照してください。以下のスニペット例は、フィルターを使用した迂回を示しています。
<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> ... <divert name="myDivert" filter="FILTER_EXPRESSION" ... /> ... </subsystem>
JMS セレクター式と JBoss EAP メッセージングのコアフィルター式にはいくつかの違いがあります。JMS セレクター式は JMS メッセージで動作しますが、JBoss EAP メッセージングのコアフィルター式はコアメッセージで動作します。
以下の識別子をコアフィルター式で使用することで、コアメッセージの属性を参照できます。
-
AMQPriority
。メッセージの優先度を参照します。メッセージの優先度は、0 - 9
の有効な値を持つ整数です。0
の優先度が最も低く、9
が最も高くなります。たとえば、AMQPriority
= 3 AND animal = 'aardvark' のようになります。 -
AMQExpiration
。メッセージの有効期限を参照します。値は長整数です。 -
AMQDurable
。メッセージが永続的であるどうかを参照します。値は、DURABLE
またはNON_DURABLE
という有効な値を持つ文字列です。 -
AMQTimestamp
。メッセージが作成された時点のタイムスタンプです。値は長整数です。 -
AMQSize
。メッセージのサイズ (バイト単位)。値は整数です。
コアフィルター式で使用される他の識別子はメッセージのプロパティーであると考えられます。