2016-11-17 80 views
1

由于各种原因,我们遇到了一些情况,我们希望从Google Cloud Platform(GCP)Pubsub订阅中暂停推送通知,并允许它们排队,然后最终“取消暂停”,并允许推送继续进行丢失任何消息。如何暂停GCP Pubsub推送订阅?

  1. 这是一个内置功能吗?
  2. 你能提出一个解决方法吗?
+0

我没有看到它作为一个[发布订阅API功能(https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions#PushConfig) – successhawk

回答

0

好消息。我在https://cloud.google.com/pubsub/docs/subscriber#receive_push

停止/暂停和恢复推送

偶然发现了这个问题的答案为订阅暂停接收邮件,发送 modifyPushConfigRequest到设置推送终点为空字符串 。消息将积累,但不会被传递。要 继续接收消息,请发送另一个modifyPushConfigRequest 请求与填充的推送端点。

要永久停止投放,您应该删除订阅。

0

我不认为有这样的暂停功能。相反,您可以使用轮询消费者,并且可以在需要暂停时停止轮询。这就是我能想到的。

0

推送订阅没有“暂停”功能。如果可以的话,你可以考虑switching to a pull subscription。然后,您可以准确控制何时请求消息。

如果您无法切换到请求订阅,那么当您收到消息或使您的端点不可用时,您可能会返回错误响应。 Google Cloud Pub/Sub将退回邮件的重新传递,等待间隔时间为10秒。它将尝试重新传递信息7天。根据您需要暂停消息消费的时间长短,这可能是一个可行的选择。

如果您不需要频繁地在“暂停”和“未暂停”之间切换,每分钟少于一次,那么您可以通过将您的订阅者切换到拉取订阅(而不是拉取)来实现此行为暂停行为,然后切换回推送订阅以再次开始接收消息。

+0

发生了什么7天后留言? – eCeleritas

+0

它将被删除。 Google Cloud Pub/Sub保留七天的未确认邮件。 –

+0

谢谢@ KamalAboul-Hosn。我在文档中看到了这一点,但有一点不清楚,就是如果“重试”是按消息或按订阅进行的。我相信这是每条消息,这是我们的账单因许多重试而运行的原因之一,我们根据API调用收取费用。 100万条消息坐在队列中,每10秒重试一次,加起来很快。我们确实需要一个“暂停”功能,并且能够配置“重试策略”也很好。 – successhawk