我已经使用以下代码观看/订阅了该主题。
request = {
'labelIds': ['INBOX'],
'topicName': 'projects/myproject/topics/mytopic'
}
gmail.users().watch(userId='me', body=request).execute()
如何在任何给定时间获取主题的状态?问题是,有时我无法从Gmail接收任何传入电子邮件的推送。
答案 0 :(得分:1)
从Cloud Pub / Sub角度来看,如果要检查消息的状态,可以通过Stackdriver查看指标。有许多Cloud Pub/Sub metrics可用。您可以转到Stackdriver,创建一个新的仪表板,单击“添加图表”,然后在“查找资源类型和度量”框中键入度量的名称,以在稍后将提及的任何度量上创建图形:
您需要确定的第一件事是问题是在发布端(从Gmail到您的主题)还是在订阅端(从订阅到您的推送端点)。要确定主题是否正在接收消息,请查看> [:foo, :bar].product([[]]) # => [[:foo, []], [:bar, []]]
> hash = Hash[[[:foo, []], [:bar, []]]] # => {:foo=>[], :bar=>[]}
> hash[:foo].push(:baz) # => {:foo=>[:baz], :bar=>[]}
指标。在从Gmail发送邮件到该主题的时间点,该值不应为零。如果始终为零,则可能是从Gmail到Cloud Pub / Sub的连接设置不正确,例如,您需要grant publish rights进入主题。请注意,结果会延迟,因此从您希望发送消息的时间到消息在图表上反映的时间最多可能需要5分钟。
如果邮件已成功发送到发布/订阅,那么您将要查看尝试接收这些邮件的状态。如果您的订阅是推送订阅,则需要查看topic/send_message_operation_count
的订阅。结果按响应代码分组。如果响应在400或500范围内,则Cloud Pub / Sub尝试将消息传递给您的订户,但是订户返回错误。在这种情况下,您的订户本身可能有问题。
如果您正在使用Cloud Pub / Sub客户端库,则需要查看subscription/push_request_count
之类的属性,以确定您的订阅者是否正在设法获取订阅消息。如果您是直接在订户中调用pull方法,则需要查看subscription/streaming_pull_message_operation_count
来查看是否存在将请求成功返回给订户的pull请求。
如果“推”,“拉”或“流拉”的度量指示错误,则应有助于缩小问题的范围。如果根本没有请求,则表明订阅者可能没有权限问题,例如,订阅者正以没有权限读取订阅的用户身份运行。