すべてのプロダクト
Search
ドキュメントセンター

Simple Message Queue (formerly MNS):メッセージフィルタリング

最終更新日:Jan 13, 2025

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 タグが設定されています。トピックのサブスクライブ方法の詳細については、「作成」をご参照ください。

  1. トピック A の [サブスクリプションの作成] パネルで、[プッシュタイプ] ドロップダウンリストから [キュー] を選択し、[受信者エンドポイント] ドロップダウンリストから [キュー B] を選択し、[メッセージフィルタリングタグ] フィールドに「tag-a」と入力します。

    image.png

  2. SDK を使用してメッセージをサブスクライブする場合は、キュー B にプッシュするメッセージに tag-a タグを追加します。完全なサンプルコードの詳細については、「手順 5: メッセージを公開する」をご参照ください。

    次のサンプルコードは、キュー B にプッシュされるメッセージに tag-a タグを追加します。

    	TopicMessage message = new Base64TopicMessage();
    
        // タグは、サブスクリプションに設定したメッセージフィルタリングタグと同じである必要があります。
        message.setMessageTag("tag-a");