本文提供如何搭配發布至主題的訊息使用流量控制的相關資訊。
關於流量控制
發布端用戶端嘗試發布訊息的速度,可能比該用戶端將資料傳送至 Pub/Sub 服務的速度更快。用戶端會受到許多因素限制,包括:
- 電腦 CPU、RAM 和網路容量
- 網路設定,例如待處理要求數量和可用頻寬
- 每個發布要求的延遲時間,主要取決於 Pub/Sub 服務、用戶端和 Google Cloud
如果發布要求比率超過這些限制,要求就會累積在記憶體中,直到失敗並出現 DEADLINE_EXCEEDED 錯誤為止。如果迴圈中發布了數萬則訊息,在幾毫秒內產生數千個要求,就特別容易發生這種情況。
如要診斷這個問題,請在 Monitoring 中查看伺服器端指標。您無法查看失敗的要求 (DEADLINE_EXCEEDED),只能查看成功的要求。成功要求率可反映用戶端機器的輸送量,做為設定流量控制的基準。
如要緩解流量速率問題,請為發布者用戶端設定流量控制,限制發布要求速率。您可以設定為未處理要求分配的位元組數上限,以及允許的未處理訊息數上限。請根據用戶端機器的處理量容量設定這些限制。
事前準備
設定發布工作流程前,請務必先完成下列工作:
必要的角色
如要取得使用流量控管功能所需的權限,請要求管理員授予您主題的「Pub/Sub 發布者」 (roles/pubsub.publisher) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
您需要額外權限,才能建立或更新主題和訂閱項目。
搭配訊息使用流量控制
您可以使用下列語言的 Pub/Sub 用戶端程式庫,進行發布者流量控制:
C++
在試用這個範例之前,請先按照快速入門:使用用戶端程式庫中的 C++ 設定操作說明進行操作。詳情請參閱 Pub/Sub C++ API 參考文件。