Simple Message Queue (旧称 MNS) のメッセージフィルタリング機能は、タグを使用してトピックのメッセージを異なるキューにプッシュするために使用されます。このトピックでは、メッセージフィルタリング機能と、メッセージフィルタリング用のタグを設定する方法について説明します。
背景情報
通常の場合、SMQ は、トピックでサブスクリプションを作成した後、指定されたキューにメッセージをプッシュします。メッセージにタグが設定されておらず、サブスクリプションにメッセージフィルタリングタグが設定されていない場合、すべてのメッセージは指定されたキューにプッシュされます。
サブスクリプションにメッセージフィルタリングタグを設定した場合、メッセージに同じタグを設定した場合にのみ、メッセージは指定されたキューにプッシュされます。
特殊なケースとして、サブスクリプションにメッセージフィルタリングタグを設定しない場合、メッセージにタグを設定するかどうかに関係なく、メッセージは指定されたキューにプッシュされます。
機能の説明
次の図は、異なるタグを持つメッセージが、サブスクリプションのメッセージフィルタリングタグに基づいてどのようにフィルタリングされ、対応する宛先キューにプッシュされるかを示しています。

この例のトピック 1 では、サブスクリプション 1、サブスクリプション 2、およびサブスクリプション 3 が異なるメッセージフィルタリングタグで作成されています。 3 つのサブスクリプションの宛先キューは、キュー 1、キュー 2、およびキュー 3 です。
メッセージのタグがサブスクリプションのメッセージフィルタリングタグと同じ場合、メッセージはサブスクリプションで指定されたキューにプッシュされます。詳細:
SMQ はメッセージ 1 をキュー 1 にプッシュします。
SMQ はメッセージ 2 をキュー 2 にプッシュします。
サブスクリプションにメッセージフィルタリングタグが設定されていない場合、すべてのメッセージはサブスクリプションで指定されたキューにプッシュされます。詳細:
SMQ はメッセージ 1 をキュー 3 にプッシュします。
SMQ はメッセージ 2 をキュー 3 にプッシュします。
SMQ はメッセージ 3 をキュー 3 にプッシュします。
メッセージのフィルタリング
この例では、tag-a タグを持つメッセージのみが指定されたキュー B にプッシュされるように、トピック A のサブスクリプションに tag-a タグが設定されています。トピックのサブスクライブ方法の詳細については、「作成」をご参照ください。
トピック A の [サブスクリプションの作成] パネルで、[プッシュタイプ] ドロップダウンリストから [キュー] を選択し、[受信者エンドポイント] ドロップダウンリストから [キュー B] を選択し、[メッセージフィルタリングタグ] フィールドに「tag-a」と入力します。

SDK を使用してメッセージをサブスクライブする場合は、キュー B にプッシュするメッセージに tag-a タグを追加します。完全なサンプルコードの詳細については、「手順 5: メッセージを公開する」をご参照ください。
次のサンプルコードは、キュー B にプッシュされるメッセージに tag-a タグを追加します。
TopicMessage message = new Base64TopicMessage(); // タグは、サブスクリプションに設定したメッセージフィルタリングタグと同じである必要があります。 message.setMessageTag("tag-a");