このドキュメントでは、メッセージのパブリッシュについて説明します。
パブリッシャー アプリケーションによって、メッセージが作成され、トピックに送信されます。Pub/Sub では、既存のサブスクライバーに対して、メッセージの at-least-once 配信とベストエフォートの順序指定を実施しています。
パブリッシャー アプリケーションの一般的なフローは次のとおりです。
- データを含むメッセージを作成します。
- リクエストを Pub/Sub サーバーに送信し、指定されたトピックにメッセージをパブリッシュします。
始める前に
パブリッシュ ワークフローを構成する前に、次のタスクを完了していることを確認してください。
- 公開ワークフローについて学びます。
- トピックを作成します。
- サブスクリプションを選択して作成します。
必要なロール
トピックにメッセージをパブリッシュするために必要な権限を取得するには、トピックに対する Pub/Sub パブリッシャー (roles/pubsub.publisher)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
トピックとサブスクリプションを作成または更新するには、追加の権限が必要です。
メッセージの形式
メッセージは、メッセージ データとメタデータを含むフィールドで構成されます。メッセージに少なくとも次のいずれかを指定します。
Pub/Sub サービスは、次のフィールドをメッセージに追加します。
- トピックに一意のメッセージ ID
- Pub/Sub サービスがメッセージを受信した時点のタイムスタンプ
メッセージの詳細については、メッセージ形式をご覧ください。
メッセージをパブリッシュする
メッセージは、 Google Cloud コンソール、Google Cloud CLI、Pub/Sub API、クライアント ライブラリを使用してパブリッシュできます。クライアント ライブラリは、メッセージを非同期的にパブリッシュできます。
次のサンプルは、メッセージをトピックにパブリッシュする方法を示しています。
Console
メッセージをパブリッシュする手順は次のとおりです。
Google Cloud コンソールで、[Pub/Sub トピック] ページに移動します。
トピック ID をクリックします。
[トピックの詳細] ページの [メッセージ] で、[メッセージをパブリッシュ] をクリックします。
[メッセージ本文] フィールドにメッセージのデータを入力します。
[公開] をクリックします。
gcloud
メッセージをパブリッシュするには、gcloud pubsub topics publish コマンドを使用します。
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE_DATA \ [--attribute=KEY="VALUE",...]
以下を置き換えます。
- TOPIC_ID: トピックの ID
- MESSAGE_DATA: メッセージ データを含む文字列
- KEY: メッセージ属性のキー
- VALUE: メッセージ属性のキーの値
REST
メッセージをパブリッシュするには、次のような POST リクエストを送信します。
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID:publish Content-Type: application/json Authorization: Bearer $(gcloud auth application-default print-access-token)
以下を置き換えます。
- PROJECT_ID: トピックがあるプロジェクトのプロジェクト ID
- TOPIC_ID: トピックの ID
リクエスト本文に次のフィールドを指定します。
{
"messages": [
{
"attributes": {
"KEY": "VALUE",
...
},
"data": "MESSAGE_DATA",
}
]
}以下を置き換えます。
- KEY: メッセージ属性のキー
- VALUE: メッセージ属性のキーの値
- MESSAGE_DATA: Base64 でエンコードされたメッセージ データの文字列
メッセージには、空でないデータ フィールドか、少なくとも 1 つの属性が含まれている必要があります。
リクエストが成功した場合のレスポンスは、メッセージ ID が含まれる JSON オブジェクトです。次の例は、メッセージ ID が含まれるレスポンスを示しています。
{
"messageIds": [
"19916711285",
]
}C++
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C++ の設定手順を実施してください。詳細については、Pub/Sub C++ API リファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
Go
次のサンプルでは、Go Pub/Sub クライアント ライブラリのメジャー バージョン(v2)を使用しています。v1 ライブラリをまだ使用している場合は、v2 への移行ガイドをご覧ください。v1 コードサンプルの一覧については、 非推奨のコードサンプルをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Go の設定手順を実施してください。詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。