JMSでは、メッセージをフィルタおよび分類するアプリケーションがサポートされています。 メッセージを作成する場合、そのメッセージにプロパティを設定できます。 コンシューマを作成する場合は、セレクタ文字列を指定できます。 メッセージは、そのセレクタがメッセージに適用されてtrueに評価された場合にのみコンシューマに渡されます。
メッセージセレクタ文字列は、SQL92のサブセットを使用して定義されるブール式です。 この文字列には、リテラル、ID(JMS組み込みメッセージプロパティおよびアプリケーション固有プロパティを指定)、空白文字、およびさまざまな演算子を含めることができます。 詳細については、『コンセプト』を参照してください。
P2Pモデルでは、メッセージセレクタはキューでの「ビュー」を作成するために使用されます。 メッセージが特定のコンシューマにより選択されていない場合、キューはこのメッセージを必要する他のコンシューマために保守します。 つまり、未選択メッセージは、他のコンシューマに再び割り当てられます。
pub/subモデルでは、未選択メッセージは破棄されます。 サブスクライバのセレクタがメッセージを拒否すると、このメッセージは、このサブスクライバに使用できなくなります。 同じトピックの他のサブスクライバは、メッセージセレクタによっては、このメッセージを受信することができます。
このセクションでは、P2Pおよびpub/subモデルを説明し、メッセージセレクタを使用する2つの例を示します。
チャットアプリケーションでは、簡単なテキストメッセージを交換できます。 この例は、pub/subモデルに基づいた簡単なチャットアプリケーションです。セレクタは、特定のユーザのメッセージ送信を拒否するために使用されます。
メールアプリケーションは、メッセージ送信時にオフラインなっているユーザにメールメッセージを送信する場合に使用されます。 この例では、P2Pモデルを使用して簡単なメールプログラムを作成する方法を示します。セレクタは、どのメッセージを誰に送るかを決定するために使用されます。