本文提供有關使用並行控制機制與發布至主題的訊息相關資訊。
並行控制可讓您覆寫用戶端程式庫用於發布訊息的背景 (I/O) 執行緒的預設數量。這樣一來,發布端用戶端就能同時傳送訊息。
並行控制是 Pub/Sub 高階用戶端程式庫中提供的功能。使用低階程式庫時,您也可以實作專屬的並行控制項。
並行控制的支援功能取決於用戶端程式庫的程式設計語言。對於支援平行執行緒的語言實作 (例如 C++、Go 和 Java),用戶端程式庫會為執行緒數量提供預設選擇。
本頁面說明並發控制的概念,以及如何為發布商客戶端設定這項功能。如要設定訂閱者用戶端以便控管並行作業,請參閱「透過並行作業控管功能處理更多訊息」。
事前準備
設定發布工作流程前,請確認您已完成下列工作:
必要的角色
如要取得發布至主題的訊息所需的權限,請要求管理員授予您主題的 Pub/Sub 發布者 (roles/pubsub.publisher
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
您需要額外權限,才能建立或更新主題和訂閱項目。
並行控制設定
並行控制變數的預設值和變數名稱可能因用戶端程式庫而異。舉例來說,在 Java 用戶端程式庫中,用來設定並行處理作業控制機制的函式為 setExecutorProvider()
和 setChannelProvider()
。詳情請參閱 API 參考說明文件。
您可以使用 setExecutorProvider() 自訂用於處理發布回應的執行緒提供者。舉例來說,您可以將執行緒供應器變更為在多個發布者用戶端中傳回單一共用執行緒,並限制執行緒數量。這項設定有助於限制建立的執行緒數量。
setChannelProvider() 可讓您自訂用於開啟 Pub/Sub 連線的管道提供者。除非您想在多個發布商用戶端中使用相同的管道,否則通常不會設定這個值。在太多用戶端中重複使用管道,可能會導致
GOAWAY
或ENHANCE_YOUR_CALM
錯誤。如果您在應用程式記錄或 Cloud Logs 中看到這些錯誤,請建立更多管道。
並行控制的程式碼範例
C++
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 C++ 環境。詳情請參閱 Pub/Sub C++ API 參考說明文件。
Go
在試用這個範例之前,請先按照 快速入門:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 Pub/Sub Go API 參考說明文件。
Java
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Java 環境。詳情請參閱 Pub/Sub Java API 參考說明文件。
Ruby
在嘗試這個範例之前,請先按照 快速入門:使用用戶端程式庫中的操作說明設定 Ruby 環境。詳情請參閱 Pub/Sub Ruby API 參考說明文件。
後續步驟
如要限制 Pub/Sub 儲存訊息資料的位置,請參閱「限制 Pub/Sub 資源位置」。
如要進一步瞭解訊息接收作業,請參閱「選擇訂閱類型」。