我创建了一些 Pub/Sub 订阅,该订阅没有附加消费者,并且可以存储消息长达 7 天。这是因为理想情况下,这些 Pub/Sub 中的消息数量不应超过某个阈值。我想从我的应用程序定期监控这些发布/订阅,然后在数量超过阈值的极少数情况下处理消息。如果没有,即使设置相同的警报也会有所帮助。
我知道我可以从 Google Cloud Console 为订阅设置 Cloud Monitoring 并创建仪表板/提醒。有没有办法通过 JAVA 客户端库(Google Cloud Monitoring 链接到文档)以编程方式执行此操作?由于没有很多可用的代码示例,我发现这很困难。
TLDR:如何在我的代码中使用 google-cloud-monitoring JAVA 客户端库获取 Pub/Sub 订阅中未确认消息的数量
listTimeSeries
方法获取数据。
您可以使用 MetricServiceClient.ListTimeSeriesRequest 以编程方式读取这些指标(例如 subscription/num_undelivered_messages)。 Cloud Monitoring 文档页面包含一般如何初始化客户端库的示例:https://cloud.google.com/monitoring/docs/reference/libraries#using_the_client_library
我一直在尝试做同样的事情。其他答案是正确的,您需要使用 listTieSeries。您需要执行以下操作:
您将能够在 ResponseObject.timeSeries[0].points[0].value.int64Value 下看到未确认消息的数量
请注意,这不会是实时的,会有大约 2 分钟的刷新延迟。