本文說明如何從提取訂閱項目接收訊息。您可以使用 Google Cloud 控制台、Google Cloud CLI、用戶端程式庫或 Pub/Sub API 建立提取訂閱項目。
事前準備
- 建立提取訂閱項目。
所需角色和權限
如要取得從提取訂閱項目接收訊息所需的權限,請要求管理員授予您訂閱項目的「Pub/Sub 訂閱者」 (roles/pubsub.subscriber) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備 pubsub.subscriptions.consume 權限,可接收來自提取訂閱項目的訊息。
從訂閱項目提取訊息
下列範例示範如何使用 StreamingPull API 或 Pull API,從訂閱項目中提取訊息。
StreamingPull API
如要使用 StreamingPull API,必須使用用戶端程式庫。
Google Cloud 控制台和 Google Cloud CLI 不支援 StreamingPull API。
StreamingPull 和高階用戶端程式庫程式碼範例
C++
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C++ 設定說明操作。詳情請參閱 Pub/Sub C++ API 參考文件。
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 參考文件。
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 Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
使用高階用戶端程式庫擷取自訂屬性
下列範例說明如何非同步提取訊息,並從中繼資料擷取自訂屬性。
C++
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C++ 設定說明操作。詳情請參閱 Pub/Sub C++ API 參考文件。
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 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定說明操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定說明操作。詳情請參閱 Pub/Sub Python API 參考文件。
小茹
下列範例使用 Ruby Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
使用高階用戶端程式庫處理錯誤
下列範例說明如何處理訂閱訊息時發生的錯誤。
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 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定說明操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定說明操作。詳情請參閱 Pub/Sub Python API 參考文件。
小茹
下列範例使用 Ruby Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
Rust
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Rust 設定說明操作。詳情請參閱 Pub/Sub Rust API 參考文件。
一元提取
如要使用 Unary API,可以透過 Google Cloud 控制台、Google Cloud CLI 或用戶端程式庫操作。
注意事項
Pub/Sub 會傳送訊息清單。 如果清單有多則訊息,Pub/Sub 會依排序鍵排序訊息。以下是幾項重要注意事項:
即使待處理事項中有這麼多訊息,在要求中為
max_messages設定值也不保證會傳回max_messages。Pub/Sub Pull API 可能會傳回少於max_messages的訊息,以減少可立即傳送訊息的傳送延遲時間。如果提取回應包含 0 則訊息,則不得做為積壓工作中沒有訊息的指標。你可能會收到 0 則訊息的回覆,但後續要求會傳回訊息。
控制台
前往 Google Cloud 控制台的「Pub/Sub subscriptions」(Pub/Sub 訂閱項目) 頁面。
按一下要從中提取的訂閱項目名稱。
在「Messages」(訊息) 分頁中,按一下「Pull」(提取)。
畫面上應會顯示您發布到這個訂閱項目的訊息,以及發布時間。
使用 Google Cloud 控制台時,如果訂閱項目訊息量偏低,提取要求可能會傳回零訊息。這是因為控制台使用 Unary pull,無法保證低延遲和高處理量。如果沒有顯示任何訊息,請在有訊息時發出新的提取要求。
gcloud
如要從訂閱項目提取訊息,請執行 gcloud pubsub subscriptions pull 指令。gcloud CLI 會在指令列中列印訊息。
gcloud pubsub subscriptions pull SUBSCRIPTION_NAME --auto-ack
更改項目:
SUBSCRIPTION_NAME:要從中提取訊息的訂閱項目名稱。
用戶端程式庫
C++
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C++ 設定說明操作。詳情請參閱 Pub/Sub C++ API 參考文件。
C#
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C# 設定操作說明操作。詳情請參閱 Pub/Sub C# API 參考文件。
Java
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Java 設定說明操作。詳情請參閱 Pub/Sub Java API 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定說明操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
PHP
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 PHP 設定說明操作。詳情請參閱 Pub/Sub PHP API 參考文件。
小茹
下列範例使用 Ruby Pub/Sub 用戶端程式庫第 3 版。如果您仍在使用第 2 版程式庫,請參閱 第 3 版遷移指南。如要查看 Ruby 第 2 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Ruby 設定操作說明操作。詳情請參閱 Pub/Sub Ruby API 參考文件。
通訊協定
要求:
POST https://pubsub.googleapis.com/v1/projects/myproject/subscriptions/mysubscription:pull
{
"returnImmediately": "false",
"maxMessages": "1"
}
回應:
200 OK
{
"receivedMessages": [{
"ackId": "dQNNHlAbEGEIBERNK0EPKVgUWQYyODM2LwgRHFEZDDsLRk1SK...",
"message": {
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "19917247034"
}
}]
}
要求:
POST https://pubsub.googleapis.com/v1/projects/myproject/subscriptions/mysubscription:acknowledge
{
"ackIds": [
"dQNNHlAbEGEIBERNK0EPKVgUWQYyODM2LwgRHFEZDDsLRk1SK..."
]
}
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定說明操作。詳情請參閱 Pub/Sub Python API 參考文件。