よくある質問

全般的な質問

Google が新しいパブリッシュ / サブスクライブ サービスを提供しているのはなぜですか?

メッセージング ミドルウェアは成熟した市場ですが、特にクラウド環境では単一の独占的なサービスやプロトコルはありません。Cloud Pub/Sub で、Google Cloud Platform のお客様に独自に組み合わせた機能を提供できると考えています。また、内部と外部で同じテクノロジーを使用することで、Cloud Pub/Sub は Google による新世代の取り組みを行っています。さらに、Google は自社サービスにも Cloud Pub/Sub API を使用しています。Google ではオープン スタンダードをサポートすることを目指しており、関連するプロトコルや API に習熟しているデベロッパーが Cloud Pub/Sub を簡単に使用できるようにする方法を積極的に模索しています。

これは Firebase Cloud Messaging(FCM)やサポートが終了した Google Cloud Messaging(GCM)に関連したものですか?

「はい」とも「いいえ」とも言えます。いずれのシステムもメッセージの配信に使用されますが、FCM はエンドユーザー デバイス間でのメッセージの送受信に、Cloud Pub/Sub はサーバー間での通信に使用されます。FCM では非常に多数の配信エンドポイントにスケーリングするように設計されていますが、スループット(1 チャネル 1 秒あたりのメッセージ数)が低下します。Cloud Pub/Sub にはスループットの制限はなく、より汎用的な API が使用されます。

これは PubSubHubbub に関連したものですか?

いいえ。Google 社員は PubSubHubbub の考案に深く関わっていましたが、PubSubHubbub の RSS とコンテンツを広くシンジケートする強みは、Cloud Pub/Sub が目指すユースケースではありません。名前以外の共通点はほとんどありません。

Cloud Pub/Sub を使用して、異なる App Engine モジュール間で通信できますか?

はい。Cloud Pub/Sub を使用して、1 つの App Engine アプリケーション内の異なるモジュール間、さらには同じプロジェクト内の異なるアプリケーション間でさえも、特別な ACL 構成を行わずにメッセージを送受信できます。

Cloud Pub/Sub を App Engine 以外のプラットフォームで使用できますか?

はい。Cloud Pub/Sub は、Google Compute Engine にホストされているアプリケーション、さらには Google 以外のプラットフォームにホストされているアプリケーションとも使用できます。必要なのは、Google Cloud Platform Console プロジェクトを開始することのみです。

App Engine と Compute Engine アプリケーションを接続するにはどうすればよいですか?

Compute Engine から App Engine への低レイテンシ メッセージングには、push 配信を使用します。App Engine から多数の Compute Engine サブスクライバーにデータを送信する場合は、pull 配信を使用します。

Cloud Pub/Sub 指標をモニタリングするにはどうすればよいですか?

こちらの記事をご覧ください。

Cloud Pub/Sub には KMS が統合されていますか?

いいえ。設計上、Cloud Pub/Sub は一時キューをストレージとして使用するメッセージ配信システムとなっています。Cloud Pub/Sub には Cloud Key Management Service が統合されていませんが、クライアントは独自に(Cloud KMS または他の鍵管理サービスを使用して)メッセージの暗号化を実装できます。クライアントがメッセージの存続期間を制御することもできます。

技術的な質問

メッセージは順序どおりに配信されますか?

Cloud Pub/Sub では、順序どおりの配信、つまり FIFO(先入れ先出し)配信は保証されません。メッセージは可能な限りすばやく配信され、より古いメッセージが先に配信されるように優先されますが、それが保証されているわけではありません。厳密な順序指定は Cloud Pub/Sub の可用性とスケーラビリティに反するものです。このトピックに関する詳細は、メッセージの順序指定をご覧ください。

使用率が制限を十分に下回っているときに割り当てエラーが出るのはなぜですか?

割り当てと制限で説明されているように、割り当ては認証されたクライアントに関連付けられたプロジェクトに対して適用されます。十分な割り当てを持つプロジェクトに関連付けられたサービス アカウントまたは API_KEY を使用していることを確認してください。特に、gcloud コマンドラインは共有プロジェクトを使用するため、割り当ては非常に限定されています。

重複メッセージが多すぎるのはなぜですか?

Cloud Pub/Sub では最低 1 回のメッセージ配信が保証されているため、場合によっては重複が発生します。ただし、重複率が高い場合は、構成された ack_deadline_seconds 内にクライアントがメッセージに応答していないために、Cloud Pub/Sub がメッセージ配信を再試行している可能性があります。これは、モニタリング指標 pubsub.googleapis.com/subscription/pull_ack_message_operation_count(pull サブスクリプションの場合)と pubsub.googleapis.com/subscription/push_request_count(push サブスクリプションの場合)で発生する可能性があります。/response_code で値の大きな expired または webhook_timeout 値を探してください。Cloud Pub/Sub はメッセージを内部でバッチ処理し、部分的に承認されたバッチが再配信されるため、この問題は特に小さなメッセージが数多く存在する場合に発生します。

または、それらの特定のメッセージを処理するコードパスが失敗し、Acknowledge 呼び出しが行われないか、push エンドポイントが応答しない、あるいはエラーで応答するため、サブスクライバーが一部のメッセージに確認応答しない場合もあります。

重複するメッセージを検出するにはどうすればよいですか?

Cloud Pub/Sub はメッセージごとに一意の `message_id` を割り当てます。この ID を使用して、サブスクライバーから重複して受信したメッセージを検出できます。ただし、同じデータに対する複数のパブリッシュ リクエストによって重複する結果となったメッセージを検出することはできません。こうしたメッセージを検出するには、パブリッシャーによって一意のメッセージ識別子が指定されている必要があります。詳しくは、Cloud Pub/Sub I/O をご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Pub/Sub ドキュメント