本文提供有關使用流量控制功能與發布至主題的訊息相關資訊。
關於流量控制
發布端用戶端可能會嘗試以比用戶端傳送資料至 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 參考說明文件。
Go
在試用這個範例之前,請先按照 快速入門:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 Pub/Sub Go API 參考說明文件。
Java
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Java 環境。詳情請參閱 Pub/Sub Java API 參考說明文件。
Node.js
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Node.js 環境。詳情請參閱 Pub/Sub Node.js API 參考說明文件。
Node.js
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Node.js 環境。詳情請參閱 Pub/Sub Node.js API 參考說明文件。
Python
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Python 環境。詳情請參閱 Pub/Sub Python API 參考說明文件。
Ruby
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Ruby 環境。詳情請參閱 Pub/Sub Ruby API 參考說明文件。