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

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

メッセージをパブリッシュするワークフロー

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 つのサブスクライバーのみがメッセージを受信します。

パブリッシャーがサブスクライバーの数を知る必要はありません。これらはトピックに焦点を合わせ、メッセージ送信とメッセージ受信の間の問題を明確にします。

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

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"
}

次のステップ