iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0
Build on Google AI

將考國際證照的應用程式變成開源系列 第 22

發布/訂閱:快速啟動 - 控制台

  • 分享至 

  • xImage
  •  

這份 Pub/Sub: Qwik Start - Console 教學主要是透過 Google Cloud Console (網頁介面) 來操作。若要將整個過程轉換為使用 Cloud Shell 的 CLI (gcloud 指令) 來進行,請參考以下詳細的步驟與說明:

在開始之前,請確保您已經點擊了畫面右上角的 Activate Cloud Shell (啟動 Cloud Shell) 按鈕,並等待終端機載入完成。

步驟 1:建立 Pub/Sub 主題 (Topic)

首先,我們需要建立一個用來接收和保留資料的「主題」。對應網頁中的 Task 1。

執行指令:

gcloud pubsub topics create MyTopic

詳細說明:

  • gcloud pubsub topics create:這是 Google Cloud SDK 中用來建立新 Pub/Sub 主題的標準指令。
  • MyTopic:這是您賦予該主題的名稱 (ID)。執行成功後,系統會回傳已建立的主題路徑 (例如:Created topic [projects/YOUR_PROJECT_ID/topics/MyTopic])。

步驟 2:建立訂閱 (Subscription)

有了主題之後,我們需要建立一個「訂閱」來存取發布到該主題的資料。對應網頁中的 Task 2。

執行指令:

gcloud pubsub subscriptions create MySub --topic=MyTopic

詳細說明:

  • gcloud pubsub subscriptions create MySub:建立一個名為 MySub 的新訂閱。
  • --topic=MyTopic:這個參數非常重要,它用來指定這個訂閱要綁定到哪一個主題。預設情況下,透過這個指令建立的訂閱類型就是 Pull (提取),與實驗室的要求一致。

步驟 3:發布訊息到主題 (Publish a Message)

接下來,我們要扮演生產者 (Producer) 的角色,發送一則訊息到剛剛建立的主題中。對應網頁中的 Task 4。

執行指令:

gcloud pubsub topics publish MyTopic --message="Hello World"

詳細說明:

  • gcloud pubsub topics publish MyTopic:指定要發布訊息的目標主題為 MyTopic
  • --message="Hello World":指定訊息的內容為 "Hello World"。執行後,系統會回傳一組 Message ID,代表訊息已經成功發布並儲存在 Pub/Sub 中等待接收。

步驟 4:接收並查看訊息 (View the Message)

最後,我們扮演消費者 (Consumer) 的角色,透過訂閱來提取剛剛發布的訊息。對應網頁中的 Task 5。

執行指令:

gcloud pubsub subscriptions pull --auto-ack MySub

詳細說明:

  • gcloud pubsub subscriptions pull MySub:要求從 MySub 這個訂閱中拉取 (Pull) 待處理的訊息。
  • --auto-ack:自動確認 (Acknowledge) 訊息。在 Pub/Sub 的機制中,訊息被拉取後必須被「確認」,否則系統會認為訊息未成功送達,並在不久後重新派發。加上這個參數後,指令會在終端機印出 "Hello World" 的同時,自動向系統回報該訊息已處理完畢。

Welcome to Cloud Shell! Type "help" to get started.
Your Cloud Platform project in this session is set to qwiklabs-gcp-04-bf208d83416a.
Use gcloud config set project [PROJECT_ID] to change to a different project.
student_02_a5c6f95e3694@cloudshell:~ (qwiklabs-gcp-04-bf208d83416a)$ gcloud pubsub topics create MyTopic
Created topic [projects/qwiklabs-gcp-04-bf208d83416a/topics/MyTopic].
student_02_a5c6f95e3694@cloudshell:~ (qwiklabs-gcp-04-bf208d83416a)$ gcloud pubsub subscriptions create MySub --topic=MyTopic
Created subscription [projects/qwiklabs-gcp-04-bf208d83416a/subscriptions/MySub].
student_02_a5c6f95e3694@cloudshell:~ (qwiklabs-gcp-04-bf208d83416a)$ gcloud pubsub topics publish MyTopic --message="Hello World"
messageIds:

  • '21022724563390913'
    student_02_a5c6f95e3694@cloudshell:~ (qwiklabs-gcp-04-bf208d83416a)$ gcloud pubsub subscriptions pull --auto-ack MySub
    DATA: Hello World
    MESSAGE_ID: 21022724563390913
    ORDERING_KEY:
    ATTRIBUTES:
    DELIVERY_ATTEMPT:
    ACK_STATUS: SUCCESS
    student_02_a5c6f95e3694@cloudshell:~ (qwiklabs-gcp-04-bf208d83416a)$

輸出結果解析:

  1. 建立主題: Created topic [...] 證實 MyTopic 已成功在您的專案 (qwiklabs-gcp-04-bf208d83416a) 中建立。
  2. 建立訂閱: Created subscription [...] 證實 MySub 已成功建立,並正確綁定到 MyTopic 主題。
  3. 發布訊息: 系統回傳了專屬的訊息 ID messageIds: - '21022724563390913',這表示您的 "Hello World" 訊息已經成功進入 Pub/Sub 系統中排隊。
  4. 接收訊息: 成功拉取到 DATA: Hello World,且底下的 ACK_STATUS: SUCCESS 代表這則訊息已經被自動確認處理完畢,Pub/Sub 系統不會再將這則訊息重複派發給這個訂閱。

根據 Pub/Sub: Qwik Start - Console 網頁內容,Task 3 共有兩道選擇題。以下是正確答案以及詳細的觀念說明:

第一題

題目:
A publisher application creates and sends messages to a ____. Subscriber applications create a ____ to a topic to receive messages from it.
(發布者應用程式建立並將訊息發送到 ____。訂閱者應用程式針對主題建立 ____ 以從中接收訊息。)

正確選項:
topic, subscription

詳細說明:
這題測驗的是 Cloud Pub/Sub 的核心基礎架構:

  • Topic (主題): 這是存放資料的邏輯節點。發布者 (Publisher) 負責產生資料,並將這些訊息發送到特定的「主題」中。您可以把主題想像成一個佈告欄或資料夾。
  • Subscription (訂閱): 這是接收資料的通道。訂閱者 (Subscriber) 如果想要獲取某個主題內的訊息,就必須針對該主題建立一個「訂閱」。建立後,Pub/Sub 系統就會透過這個訂閱,將主題內的訊息派發 (Push) 或讓訂閱者拉取 (Pull) 出來。

第二題

題目:
Cloud Pub/Sub is an asynchronous messaging service designed to be highly reliable and scalable.
(Cloud Pub/Sub 是一個設計為高可靠性且具備擴展性的非同步訊息傳遞服務。)

正確選項:
True (正確)

詳細說明:
這句話完美總結了 Cloud Pub/Sub 的三大特性:

  1. 非同步 (Asynchronous): 發布者在發送訊息到主題後,系統會立刻回傳確認 (Ack),發布者不需等待訂閱者處理完該則訊息即可繼續運作。這種「解耦」設計讓系統各部件能獨立且高效地運作。
  2. 高可靠性 (Highly reliable): 訊息一旦發布,Pub/Sub 會將其複製並安全地儲存在多個區域,確保即使發生硬體故障也不會遺失資料。
  3. 高擴展性 (Scalable): 身為 Google Cloud 的全代管服務,它可以自動根據流量擴展,不管是每秒幾則還是幾百萬則訊息,它都能輕鬆負荷。

上一篇
學習筆記:Google Cloud API Gateway (純 CLI 部署與安全防護)
下一篇
使用 API 閘道部署和保護無伺服器 API:挑戰實驗室
系列文
將考國際證照的應用程式變成開源27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言