常规问题排查

了解以下操作的问题排查步骤 使用 Pub/Sub 发现问题

无法创建主题

确认您拥有必要的 权限。 如需创建 Pub/Sub 主题,您需要拥有项目的 Pub/Sub Editor (roles/pubsub.editor) Identity and Access Management 角色。如果您没有此角色,请与您的管理员联系。如需进一步了解主题的相关问题排查信息 请参阅问题排查主题导入问题排查

无法创建订阅

请确认您已完成以下操作:

  • 确认您拥有必要的 权限。 要创建 Pub/Sub 订阅,您需要 项目的 Pub/Sub Editor (roles/pubsub.editor) IAM 角色。 如果您没有此角色,请与您的管理员联系。

  • 为订阅指定了名称。

  • 指定要将订阅附加到的现有主题的名称。

  • 如果要创建推送订阅,则在较低的位置指定 https:// 大小写(不是 http://HTTPS://)作为接收网址的协议 (在 pushEndpoint 字段中)。

如需详细了解如何排查订阅问题,请参阅排查拉取订阅问题排查推送订阅问题排查 BigQuery 订阅问题排查 Cloud Storage 订阅问题

403 (Forbidden) 个错误

如果遇到此错误,请执行以下操作:

  • 确保您已在 Google Cloud 控制台中启用 Pub/Sub API。
  • 请确保发出请求的主账号拥有 必需的权限 Pub/Sub API 资源 尤其是在您使用 Pub/Sub API 进行跨项目通信时。

  • 如果您使用的是 Dataflow,请确保 {PROJECT_NUMBER}@cloudservices.gserviceaccount.com 和 Compute Engine 服务账号 {PROJECT_NUMBER}-compute@developer.gserviceaccount.com 对相关 Pub/Sub API 资源都具有所需权限。如需了解详情,请参阅 Dataflow 安全和权限

  • 如果您使用的是 App Engine,请检查项目的权限页面,查看 App Engine 服务账号是否被列为 Pub/Sub 编辑者。如果不是,请将您的 App Engine 服务账号添加为 Pub/Sub 编辑者。通常情况下,App Engine 服务账号的格式为 <project-id>@appspot.gserviceaccount.com

使用过多的管理操作

如果您发现自己使用的 管理操作配额, 您可能需要重构代码。例如, 这个伪代码。在此示例中,管理操作 (GET) 用于检查该订阅之前是否存在 其资源。GETCREATE 都是管理员操作:

if !GetSubscription my-sub {
  CreateSubscription my-sub
}
Consume from subscription my-sub

更高效的模式是尝试使用来自订阅的消息 (假设您可以合理地确定订阅名称)。 在这种乐观方式中,仅当出现以下情况时,您才能获取或创建订阅: 出错了。请参考下面的示例:

try {
  Consume from subscription my-sub
} catch NotFoundError {
  CreateSubscription my-sub
  Consume from subscription my-sub
}