メッセージ概要のパブリッシュ

このドキュメントでは、メッセージのパブリッシュの概要を説明します。

メッセージ ワークフローのパブリッシュ

Pub/Sub を使用してメッセージをパブリッシュするために、パブリッシャー アプリケーションによってメッセージが作成され、トピックに送信されます。

  1. データを含むメッセージを作成します。
  2. パブリッシュ属性(オプション)を選択します。
  3. リクエストを Pub/Sub サーバーに送信し、指定されたトピックにメッセージをパブリッシュします。
  4. Pub/Sub サービスがメッセージを受信し、次のように処理します。

    • メッセージは配信用に保存されます。

    • メッセージは、耐久性と高可用性を実現するために複数のゾーンに複製されます。

    • Pub/Sub は、メッセージのトピックに一致するサブスクリプションを持つサブスクライバーを識別し、それぞれにメッセージのコピーを配信します。

Pub/Sub では、既存のサブスクライバーに対して、メッセージの at-least-once 配信とベストエフォートの順序指定を実施しています。

Pub/Sub システムの概要については、Pub/Sub サービスの概要をご覧ください。

Pub/Sub の仕組みについては、Pub/Sub のアーキテクチャの概要をご覧ください。

トピックについて

Pub/Sub トピックは、メッセージのフィードを表す名前付きリソースです。パブリッシャーはメッセージを送信する際に、特定のトピックをターゲットにします。Pub/Sub サービスは、このトピック名を使用して、トピックにアタッチされているすべてのサブスクリプションにメッセージをルーティングします。1 つのサブスクリプションに複数のサブスクライバーがある場合、そのサブスクリプション内の 1 つのサブスクライバーのみがメッセージを受信します。

パブリッシャーは、サブスクライバーの数を知る必要はありません。トピックに焦点を合わせ、メッセージ送信とメッセージ受信の懸念事項を分離します。

トピック内のデータ レプリケーション

Pub/Sub トピックは、3 つのゾーンを使用してデータを保存します。このサービスでは、少なくとも 2 つのゾーンに対する同期レプリケーションと、追加 の 3 つ目のゾーンに対するベスト エフォート レプリケーションをサポートします。Pub/Sub レプリケーションは 1 つのリージョン内でのみ行われます。

トピックのプロパティ

トピックを作成または更新するときに、トピックのプロパティを指定できます。

メッセージについて

Pub/Sub メッセージは、サービスを通じて移動するデータです。

メッセージは、メッセージ データとメタデータを含むフィールドで構成されます。メッセージには、次のいずれかを指定する必要があります。

  • メッセージ データ: メッセージの中核となるコンテンツであり、任意のテキストまたはバイナリデータを使用できます。これは、パブリッシャーとサブスクライバーの間で通信する実際の情報を表します。REST API を直接使用している場合、メッセージ データは Base64 でエンコードされている必要があります。[REST] タブの [メッセージをパブリッシュする] セクションの例をご覧ください。

  • 順序指定キー: メッセージを順序付ける必要があるエンティティを表す識別子です。同じ順序指定キーを持つメッセージは、パブリッシュされた順序でサブスクライバーに配信されることが想定されます。順序指定キーは、メッセージの順序指定による配信を行う場合にのみ必要です。順序指定キーの詳細については、順序メッセージをご覧ください。

  • 属性: メッセージに関する追加のコンテキストや情報を指定するオプションの Key-Value ペアです。メッセージ コンテンツのルーティング、フィルタリング、拡充に使用できます。たとえば、タイムスタンプやトランザクション ID などの属性を追加できます。メッセージのパブリッシュに使用される属性の詳細については、属性を使用してメッセージをパブリッシュするをご覧ください。

Pub/Sub サービスは、次のフィールドをメッセージに追加します。

  • トピックに一意のメッセージ ID
  • Pub/Sub サービスがメッセージを受信した時点のタイムスタンプ

たとえば、JSON のメッセージ形式は次のとおりです。

{
  "data": "This is the core message content.",
  "attributes": {
    "category": "notification",
    "user_id": "12345",
    "priority": "medium"
  },
    "orderingKey": "12345"
}

次のステップ