發布失敗通常是因用戶端瓶頸所致,例如服務 CPU 不足、執行緒健康狀態不佳或網路壅塞。發布者重試政策會定義 Pub/Sub 嘗試傳送訊息的次數,以及每次嘗試之間的時間長度。
本文說明如何對發布至主題的訊息使用重試要求。
事前準備
設定發布工作流程前,請務必先完成下列工作:
必要的角色
如要取得將訊息要求重試傳送至主題所需的權限,請要求管理員授予您主題的 Pub/Sub 發布者 (roles/pubsub.publisher) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
您需要額外權限,才能建立或更新主題和訂閱項目。
關於重試要求
重試設定可控管 Pub/Sub 用戶端程式庫重試發布要求的方式。用戶端程式庫的重試設定如下:
- 初始要求逾時:用戶端程式庫停止等待初始發布要求完成的時間長度。
- 重試延遲:要求逾時後,用戶端程式庫等待重試要求所花費的時間。
- 總逾時:用戶端程式庫停止重試發布要求後經過的時間。
如要重試發布要求,初始要求逾時時間必須短於總逾時時間。舉例來說,如果您使用指數輪詢,用戶端程式庫會計算要求逾時和重試延遲時間,如下所示:
- 每次發布要求後,要求逾時時間會增加要求逾時時間乘數,最多可達要求逾時時間上限。
- 每次重試後,重試延遲時間會增加重試延遲時間乘數,直到達到重試延遲時間上限為止。
重試訊息要求
在發布過程中,您可能會遇到暫時性或永久性發布失敗。如果是暫時性錯誤,通常不需要採取任何特殊行動,因為 Pub/Sub 會自動重試傳送訊息。
如果發布作業成功,但發布端用戶端未及時收到發布回應,也可能發生錯誤。在這種情況下,發布作業也會重試。因此,您可能會收到兩封內容相同的郵件,但郵件 ID 不同。
如果發生持續性錯誤,請考慮在發布程序以外實作適當的動作,以免 Pub/Sub 負載過重。
系統會在發布失敗時自動重試,但若發生錯誤,則無法保證會重試。以下程式碼範例會示範如何使用自訂重試設定來建立發布者 (請注意,並非所有用戶端程式庫都支援自訂重試設定;詳情請參閱所選語言的 API 參考說明文件):