如要透過 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 服務收到訊息時的時間戳記
例如,以下是 JSON 格式的訊息格式:
{
"data": "This is the core message content.",
"attributes": {
"category": "notification",
"user_id": "12345",
"priority": "medium"
},
"orderingKey": "12345"
}
發布訊息工作流程
如要透過 Pub/Sub 發布訊息,發布者應用程式會建立訊息,並將訊息傳送至「主題」。
- 建立包含資料的訊息。
- 選取任何選用發布屬性。
- 將要求傳送至 Pub/Sub 伺服器,以將訊息發布至指定的主題。
Pub/Sub 服務會接收訊息,並按照以下方式處理:
系統會儲存訊息,以便發送。
訊息會在多個區域複製,以確保耐用性和高可用性。
Pub/Sub 會找出訂閱者,並將與訊息主題相符的訂閱項目,然後將訊息的副本傳送給每個訂閱者。
Pub/Sub 會為現有訂閱者提供至少一次的訊息傳送和最佳服務排序。
如要進一步瞭解 Pub/Sub 系統,請參閱「Pub/Sub 服務總覽」。
如要進一步瞭解 Pub/Sub 的運作方式,請參閱「Pub/Sub 的架構總覽」。