よくある質問

全般的な質問

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

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

これは Google クラウド メッセージング(GCM)に関連したものですか?

はい、およびいいえ。どちらもメッセージを配信するシステムですが、Google Cloud Messaging はエンドユーザー デバイスに対してメッセージを配信するために使用され、Google Cloud Pub/Sub はサーバー間の通信に使用されます。Google クラウド メッセージングは非常に多数の配信エンドポイントにスケール設定するように設計されていますが、スループット(秒あたり、チャネルあたりのメッセージ)は低くなります。Pub/Sub には、スループットに対する制限はなく、より汎用的な API を使用します。

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

いいえ。Google 社員は PubSubHubbub の考案に深く関わっていましたが、RSS とコンテンツの同時配信におけるその強みは概して、Cloud Pub/Sub が処理するように設計されているような使用法にあるのではありません。その名前は別として、それらに共通点はほとんどありません。

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

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

Google Cloud Pub/Sub を Google App Engine 以外のプラットフォームと組み合わせて使用できますか?

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

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

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

Pub/Sub メトリックを監視するにはどうすればよいですか?

Cloud Monitoring サービスを使用して、Google Cloud Pub/Sub API の使用状況を監視できます。必要であれば、オートスケーラ-を設定して、Cloud Monitoring サービスで提供される標準指標のリスト、またはカスタム Cloud Monitoring 指標に基づき、スケーリングを行うこともできます。詳細については、Cloud Monitoring 指標に基づくスケーリングをご覧ください。

Cloud Monitoring API のサポートされている指標ページで「PubSub」を探し、プログラムを使用して監視できる指標を確認してください。

技術的な質問

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

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

メッセージはどのようにしてプッシュ エンドポイントへ安全に送信されますか?

プッシュ エンドポイントに送信されたメッセージは HTTPS により暗号化されて送信されます。プッシュ エンドポイントに SSL 証明書が設定されている必要があります。

メッセージが Google Cloud Pub/Sub から配信されたことをさらに確認する場合は、https://myapp.mydomain.com/myhandler?token=application-secret など、シークレット トークン引数が付随しているメッセージのみを受け入れるようにエンドポイントを設定できます。

サブスクリプションなしでトピックにパブリッシュするとどうなりますか?

パブリッシュ操作は成功しますが、それらに関連するサブスクリプションがないため、メッセージはドロップされます。

サブスクライバーが存在しない場合、メッセージに耐久性または永続性はありますか?

はい。Pub/Sub システムでは、パブリッシュされた時点から 7 日間、サブスクリプションが未応答のメッセージを永続ストレージに保持することが保証されています。また、30 日間クライアントの存在が検出されなかったトピックまたはサブスクリプションは自動的に削除されることがあります。たとえば、最後の Pull 操作から 30 日以内にメッセージがプルされると、サブスクリプションの削除に使用される 30 日のクロックが再開されますが、7 日前にパブリッシュされたメッセージはそれらが未応答状態であるかに関係なく、失われる可能性があります。

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

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

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

Pub/Sub では最低 1 回のメッセージ配信が保証されているため、場合によっては重複が発生します。ただし、重複率が高いと、設定された ack_deadline_seconds 内にクライアントがメッセージに応答しなくなり、Google Cloud Pub/Sub がメッセージ配信を再試行することがあります。これは、監視指標pubsub.googleapis.com/subscription/pull_ack_message_operation_count(プルサブスクリプションの場合)、および pubsub.googleapis.com/subscription/push_request_count(プッシュサブスクリプションの場合)で発生する可能性があります。/response_code で値の大きな expired または webhook_timeout 値を探してください。

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

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

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