如要使用 Pub/Sub 發布訊息,發布端應用程式會建立訊息並傳送至主題。
本文將概略說明發布工作流程,包括主題和訊息的概念。
關於主題
Pub/Sub 主題是具名資源,代表訊息動態饋給。發布者傳送訊息時,會指定特定主題。Pub/Sub 服務會使用這個主題名稱,將訊息轉送至附加至主題的所有訂閱項目。如果訂閱項目有多個訂閱者,則只有一個訂閱者會收到訊息。
發布商不需要知道訂閱者人數。他們會專注於主題,確保訊息傳送和訊息接收之間的關注點分離。
Pub/Sub 支援兩種主題:標準主題和匯入主題。
主題屬性
建立或更新主題時,您可以指定主題屬性。
如要進一步瞭解主題屬性,請參閱「主題屬性」。
關於匯入主題
匯入主題可讓 Pub/Sub 從其他來源擷取串流資料,並做為發布者應用程式,將資料傳送至主題。您可以使用控制台、Google Cloud CLI、REST 呼叫或用戶端程式庫,啟用主題的擷取功能。Google Cloud 會監控及調度資源,管理匯入主題和擷取管道。
如果沒有匯入主題,就必須使用額外服務,才能將資料來源的資料串流至 Pub/Sub。這項額外服務會從原始來源提取資料,並發布至 Pub/Sub。額外服務可以是串流引擎 (例如 Apache Spark),也可以是自訂編寫的服務。您也必須設定、部署、執行、調度及監控這項服務。
以下是匯入主題的重要資訊:
與標準主題類似,您仍可手動發布至匯入主題。
一個匯入主題只能附加一個擷取來源。
建議您為串流資料匯入主題。如果您考慮將批次資料擷取至 BigQuery,而非串流資料擷取,可以嘗試使用 BigQuery 資料移轉服務。如要將資料擷取至 Cloud Storage,Storage 移轉服務 (STS) 是不錯的選擇。
Pub/Sub 支援下列匯入主題來源:
主題中的資料複製
Pub/Sub 主題會使用三個可用區來儲存資料。這項服務支援同步複製到至少兩個可用區,並盡可能複製到第三個可用區。Pub/Sub 複製作業僅限於單一區域。
關於訊息
Pub/Sub 訊息是指在服務中移動的資料。
訊息是由包含訊息資料和中繼資料的欄位組成。訊息必須包含訊息資料或至少一個屬性。
訊息資料:這是訊息的核心內容,可以是任何文字或二進位資料。代表您想在發布端和訂閱端之間傳達的實際資訊。如果直接使用 REST API,訊息資料必須採用 base64 編碼。請參閱「發布訊息」一節中「REST」分頁的範例。
排序金鑰:這是選用 ID,代表必須排序訊息的實體。如果訊息的排序鍵相同,系統會按照發布順序傳送至訂閱端。只有在您希望訊息依序傳送時,才需要排序鍵。如要進一步瞭解排序鍵,請參閱「排序訊息」。
屬性:這些是選用的鍵/值組合,可提供訊息的其他背景資訊和資訊。可用於轉送、篩選或充實訊息內容。舉例來說,您可以新增時間戳記或交易 ID 等屬性。如要進一步瞭解發布訊息時使用的屬性,請參閱「運用屬性發布訊息」。
Pub/Sub 服務會在訊息中加入下列欄位:
- 主題專屬的訊息 ID
- Pub/Sub 服務收到訊息的時間戳記
使用 Pub/Sub 用戶端程式庫發布訊息時,請以位元組陣列的形式提供訊息 data,例如 Node.js Buffer。如果資料是字串,您必須先將其編碼為位元組 (例如使用 UTF-8 編碼),再傳遞至用戶端程式庫。
如果直接使用 REST API,訊息資料必須採用 Base64 編碼,並以字串形式傳送。
以下範例顯示用戶端傳送的訊息 JSON 表示法:
{
"data": "VGhpcyBpcyB0aGUgY29yZSBtZXNzYWdlIGNvbnRlbnQu",
"attributes": {
"category": "notification",
"user_id": "12345",
"priority": "medium"
},
"orderingKey": "12345"
}
訂閱者收到訊息時,訊息會包含 Pub/Sub 服務新增的 messageId 和 publishTime 值:
{
"data": "VGhpcyBpcyB0aGUgY29yZSBtZXNzYWdlIGNvbnRlbnQu",
"attributes": {
"category": "notification",
"user_id": "12345",
"priority": "medium"
},
"messageId": "19443130675731448",
"publishTime": "2026-05-04T23:15:19.863Z",
"orderingKey": "12345"
}
}
發布訊息工作流程
如要使用 Pub/Sub 發布訊息,發布者應用程式會建立訊息並傳送至主題。
- 建立包含資料的訊息。
- 選取任何選用的發布屬性。
- 向 Pub/Sub 伺服器傳送要求,將訊息發布至指定主題。
Pub/Sub 服務會接收訊息,並按照下列方式處理:
訊息會儲存起來,以便發布。
訊息會複製到多個可用區,確保耐用性和高可用性。
Pub/Sub 會找出訂閱項目與訊息主題相符的訂閱者,並將訊息副本傳送給每位訂閱者。
Pub/Sub 會向現有訂閱者提供至少一次的訊息傳遞,並盡可能依序傳送。
如要進一步瞭解 Pub/Sub 系統,請參閱「Pub/Sub 服務總覽」。
如要進一步瞭解 Pub/Sub 的運作方式,請參閱「Pub/Sub 架構總覽」。