並行控制是 Pub/Sub 高階用戶端程式庫提供的功能。使用低階程式庫時,您也可以實作自己的並行控制。
並行控制支援取決於用戶端程式庫的程式設計語言。對於支援平行執行緒的語言實作 (例如 C++、Go 和 Java),用戶端程式庫會預設選擇執行緒數量。
這個選項可能不適合您的應用程式。舉例來說,如果訂閱端應用程式無法處理大量傳入訊息,且 CPU 使用率不高,就必須增加執行緒數量。如果是 CPU 密集型訊息處理作業,減少執行緒數量可能較為合適。
本頁說明並行控制的概念,以及如何為訂閱端用戶端設定這項功能。如要設定發布者用戶端以進行並行控制,請參閱並行控制。
並行控制設定
並行控制變數的預設值和變數名稱可能因用戶端程式庫而異。詳情請參閱 API 參考說明文件。舉例來說,在 Java 用戶端程式庫中,設定並行控制的方法為 setParallelPullCount()
、setExecutorProvider()
、setSystemExecutorProvider()
和 setChannelProvider()
。
setParallelPullCount() 可讓您決定要開啟的串流數量。如果訂閱端用戶端可處理的資料量超過單一串流傳送的資料量 (10 MBps),您可以開啟更多串流。
setExecutorProvider() 可讓您自訂用於處理訊息的執行器供應商。舉例來說,您可以將執行器供應商變更為傳回單一共用執行器的供應商,並在多個訂閱端限制執行緒數量。這項設定有助於限制建立的執行緒數量。用於並行控制的執行緒總數取決於用戶端程式庫中傳遞的執行器供應商,以及平行提取計數。
setSystemExecutorProvider() 可讓您自訂用於租用管理的執行工具供應商。 通常您不需要設定這個值,除非您想在
setExecutorProvider
和setSystemExecutorProvider
中使用相同的執行器供應商。舉例來說,如果您有多個低輸送量的訂閱項目,可以使用相同的執行器供應器。使用相同的值可限制用戶端中的執行緒數量。setChannelProvider() 可讓您自訂用於開啟 Pub/Sub 連線的管道供應商。通常您不會設定這個值,除非您想在多個訂閱端之間使用相同管道。在過多用戶端重複使用管道,可能會導致
GOAWAY
或ENHANCE_YOUR_CALM
錯誤。如果在應用程式記錄或 Cloud Logs 中看到這些錯誤,請建立更多管道。
並行控制的程式碼範例
C++
在試用這個範例之前,請先按照快速入門:使用用戶端程式庫中的 C++ 設定操作說明進行操作。詳情請參閱 Pub/Sub C++ API 參考說明文件。
Go
以下範例使用 Go Pub/Sub 用戶端程式庫的主要版本 (v2)。如果您仍在使用第 1 版程式庫,請參閱第 2 版遷移指南。如要查看第 1 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照快速入門:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 Pub/Sub Go API 參考說明文件。
Java
在試用這個範例之前,請先按照快速入門:使用用戶端程式庫中的 Java 設定操作說明進行操作。詳情請參閱 Pub/Sub Java API 參考說明文件。
Ruby
以下範例使用 Ruby Pub/Sub 用戶端程式庫 v3。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照快速入門:使用用戶端程式庫的操作說明設定 Ruby 環境。詳情請參閱 Pub/Sub Ruby API 參考說明文件。
後續步驟
如要瞭解可為訂閱項目設定的其他傳送選項,請參閱下列文章: