如何暂停 GCP Pubsub 推送订阅?

How can I pause a GCP Pubsub push subscription?

出于各种原因,我们 运行 遇到了我们希望 "pause" 从 Google 云平台 (GCP) Pubsub 订阅推送通知并只允许它们排队的场景,然后最终 "unpause" 并允许推送继续而不会丢失任何消息。

  1. 这是内置功能吗?
  2. 你能建议一个解决方法吗?

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

推送订阅没有 "pause" 功能。如果可以,不妨考虑switching to a pull subscription。然后您可以准确控制请求消息的时间。

如果您无法切换到请求订阅,您可以 return 在收到消息或使端点不可用时收到错误响应。 Google Cloud Pub/Sub 将推迟重新传递消息,两次尝试之间最多等待 10 秒。它将尝试重新发送消息 7 天。根据您需要暂停消息使用多长时间,这可能是一个可行的选择。

如果您不需要频繁地在 "paused" 和 "unpaused" 之间切换,每分钟少于一次,那么您可以通过将订阅者切换到请求订阅(而不是拉)以获得暂停行为,然后切换回推送订阅以再次开始接收消息。

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

偶然发现了答案

Stopping/pausing and resuming push delivery

To pause receiving messages for a subscription, send a modifyPushConfigRequest to set the push endpoint to an empty string. The messages will accumulate, but will not be delivered. To resume receiving messages, send another modifyPushConfigRequest request with a populated push endpoint.

To permanently stop delivery, you should delete the subscription.