2016-11-17 87 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