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

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

このドキュメントでは、トピックとメッセージのコンセプトなど、パブリッシュ ワークフローの概要について説明します。

トピックについて

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

パブリッシャーは、サブスクライバーの数を把握する必要はありません。トピックに焦点を当て、メッセージの送信とメッセージの受信の間の関心の分離を保証します。

Pub/Sub では、標準トピックとインポート トピックの 2 種類のトピックがサポートされています。

トピックのプロパティ

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

トピックのプロパティの詳細については、トピックのプロパティをご覧ください。

インポート トピックについて

インポート トピックを使用すると、Pub/Sub は別のソースからストリーミング データを取り込み、トピックにデータを送信するパブリッシャー アプリケーションとして機能します。トピックの取り込みを有効にするには、コンソール、Google Cloud CLI、REST 呼び出し、またはクライアント ライブラリを使用します。インポート トピックの管理の一環として、Trusted Cloud by S3NS は取り込みパイプラインのモニタリングとスケーリングを提供します。

インポート トピックがない場合、データソースから Pub/Sub にデータをストリーミングするには、追加のサービスが必要になります。この追加サービスは、元のソースからデータを pull して Pub/Sub に公開します。追加サービスとしては、Apache Spark などのストリーミング エンジンやカスタム作成サービスなどがあります。また、このサービスの構成、デプロイ、実行、スケーリング、モニタリングも必要です。

インポート トピックに関する重要な情報を次に示します。

  • 標準のトピックと同様に、インポート トピックに手動で公開できます。

  • インポート トピックに接続できる取り込みソースは 1 つのみです。

ストリーミング データのトピックをインポートすることをおすすめします。ストリーミング データの取り込みではなく BigQuery へのバッチデータの取り込みを検討している場合は、BigQuery Data Transfer Service を試すことができます。Cloud Storage にデータを取り込む場合は、Storage Transfer Service(STS)がおすすめです。

Pub/Sub は、インポート トピックの次のソースをサポートしています。

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

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

Pub/Sub クライアント ライブラリを使用してメッセージをパブリッシュする場合は、Node.js の Buffer などのバイト配列としてメッセージ data を指定します。データが文字列の場合は、クライアント ライブラリに渡す前に、UTF-8 エンコードなどを使用してバイトにエンコードする必要があります。

REST API を直接使用している場合、メッセージ データは Base64 でエンコードされ、文字列として送信される必要があります。

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

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 のアーキテクチャの概要をご覧ください。

次のステップ

Apache Kafka® は、Apache Software Foundation または米国その他の諸国における関連会社の商標です。