【问题标题】:Status of the topic主题状态
【发布时间】:2019-04-06 10:05:19
【问题描述】:

我已使用以下代码观看/订阅了该主题。

request = {
  'labelIds': ['INBOX'],
  'topicName': 'projects/myproject/topics/mytopic'
}
gmail.users().watch(userId='me', body=request).execute()

如何在任何给定时间点获取主题的状态?问题是,有时我没有收到来自 Gmail 的任何传入电子邮件的推送。

【问题讨论】:

    标签: gmail-api publish-subscribe google-cloud-pubsub


    【解决方案1】:

    从 Cloud Pub/Sub 的角度来看,如果您想检查消息的状态,可以通过 Stackdriver 查看指标。有许多Cloud Pub/Sub metrics 可用。您可以在后面提到的任何指标上创建图表,方法是转到 Stackdriver,创建一个新仪表板,单击“添加图表”,然后在“查找资源类型和指标”框中输入指标的名称:

    首先要确定问题是在发布端(从 Gmail 到您的主题)还是在订阅端(从订阅到推送端点)。要确定主题是否正在接收消息,请查看 topic/send_message_operation_count 指标。在将邮件从 Gmail 发送到主题的点上,该值不应为零。如果它始终为零,则可能是从 Gmail 到 Cloud Pub/Sub 的连接设置不正确,例如,您需要 grant publish rights 到主题。请注意,结果会延迟,因此从您预计消息已发送到消息反映在图表上的时间最长可能需要 5 分钟。

    如果消息已成功发送到 Pub/Sub,那么您将希望查看尝试接收这些消息的状态。如果您的订阅是推送订阅,那么您需要查看subscription/push_request_count 的订阅。结果按响应代码分组。如果响应在 400 或 500 范围内,则 Cloud Pub/Sub 正在尝试将消息传递给您的订阅者,但订阅者正在返回错误。在这种情况下,可能是您的订阅者本身存在问题。

    如果您使用的是 Cloud Pub/Sub 客户端库,那么您需要查看 subscription/streaming_pull_message_operation_count 之类的属性,以确定您的订阅者是否正在设法为订阅获取消息。如果您直接在订阅者中调用 pull 方法,那么您需要查看 subscription/pull_message_operation_count 以查看是否有拉取请求成功返回给您的订阅者。

    如果推送、拉取或流式拉取的指标显示错误,这应该有助于缩小问题范围。如果根本没有请求,则表明订阅者可能没有权限问题,例如,订阅者正在以无权读取订阅的用户身份运行。

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多