概述
Google Cloud Pub/Sub 是一個可以讓你再不同的應用以及服務之間交換事件資料的訊息服務。 藉由分離發送者以及接收者, 它提供了一個在獨立、不同的應用之間的安全、高可用的訊息傳遞服務。 Google Cloud Pub/Sub 遞送低延遲/持久的訊息服務, 並且被開發者們廣泛地使用在實作異步工作流程, 分派事件通知, 以及不同的程序以及裝置的資料串流。
在本教程中, 你將會實作以下動作。
- 學習 Pub/Sub 的基礎
- 建立, 刪除, 以及列出 Pub/Sub 主題
- 建立, 刪除, 以及列出 Pub/Sub 訂閱
- 發布訊息到一個主題
- 使用提取訂閱者來輸出各自的主題訊息
- 使用提取訂閱者以及不同的 flag 來輸出多個訊息
前提
這是一個入們級別的教程。 如果你只有一點 Pub/Sub 的相關經驗或是完全沒有經驗都是 okay 的, 且本教程會教你基本的設定以及使用 GCP 服務
在本教程之前, 評估一下你 Pub/Sub 的熟練度。
以下是一些更有挑戰性的教程, 他們可以讓你使用你的 Pub/Sub 的知識在不同的 GCP 服務以及使用情境。
- Dataflow: Qwik Start - Templates
- Building an IoT Analytics Pipeline with Google Cloud Platform
- Scanning User-generated Content Using the Cloud Video Intelligence and Cloud Vision APIs
如果你想要從 Google Cloud 主控台使用 Pub/Sub, 別錯過這個教程: - Google Cloud Pub/Sub: Qwik Start - Console
一旦你準備好了, 往下滑並且依照以下的步驟來設定你的教程環境。
前言
本篇主要是利用 Google 的 Qwiklab 平台學習的同時,做的一份學習筆記
為避免翻譯誤解,專業術語在本篇將不會被翻譯,保留原文
設定及要求
在你按下 Start Lab 按鈕之前
詳讀所有的教學。Labs 是有時間限制的,而且你不可以停止時間倒數。倒數計時器在你按下 Start Lab 按鈕後開始倒數,上面顯示的時間為你還能使用 Cloud 資源的時間。
Qwiklabs 的手把手環境,讓你可以在真實環境中來操作進行 Qwiklabs 上提供的課程,而不是在一個模擬或是展示的環境。我們透過提供你一個全新的、暫時的帳號密碼,在計時器歸零之前,你可以用來登入並存取 Google Cloud Platform。
你需要什麼?
要完成這個 lab ,你需要:
- 一個一般的網路瀏覽器(推薦 Chrome)
- 完成這個 lab 的時間
備註: 如果你已經有你自己的個人 GCP 帳號或專案,請不要使用在這一個 lab
現在你已經開始你的 lab
, 你將會登入 Google Cloud Shell
主控台,然後開啟命令列工具
如何開始你的 lab ,然後登入 Console?
- 按下 Start Lab 按鈕。如果你需要付費,會有一個彈出視窗來讓你選擇付費的方式。在左方你會看到一個面板,上面有暫時的帳號密碼,你必須使用這些帳號密碼在此次 lab
- 複製
username
, 然後點擊Open Google Console
。 Lab 會開啟另外一個視窗,顯示選擇帳號
的頁面
tip: 開啟一個全新的視窗,然後跟原本的頁面並排
- 在
選擇帳號
頁面, 點擊Use Another Account
- 登入頁面開啟,貼上之前複製的
username
以及password
,然後貼上
重要:必須使用之前於 Connection Details 面板
取得的帳號密碼,不要使用你自己的 Qwiklabs 帳號密碼。 如果你有自己的 GCP 帳號,請不要用在這裡(避免產生費用)
- 點擊並通過接下來的頁面:
- 接受
terms
以及conditions
- 不要增加
recovery optoins
或two factor authentication
(因為這只是一個臨時帳號) - 不要註冊免費體驗
- 接受
稍待一些時候, GCP 控制台將會在這個視窗開啟。
注意:按下左上方位於Google Cloud Platform
隔壁的 Navigation menu
,你可以瀏覽選單,裡面有一系列的 GCP 產品以及服務
啟動 Google Cloud Shell
Google Cloud Shell
是載有開發工具的虛擬機器。它提供了5GB的 home 資料夾,並且運行在 Google Cloud
上。 Google Cloud Shell
讓你可以利用 command-line 存取 GCP
資源
- 在
GCP 控制台
,右上的工具列,點擊Open Cloud Shell
按鈕
- 在打開的對話框裡,按下
START CLOUD SHELL
:
你可以立即按下 START CLOUD SHELL
當對話視窗打開。
連結並提供環境會需要一點時間。當你連結成功,這代表你已成功獲得授權,且此專案已被設為你的專案ID,例如:
gcloud 是 Google Cloud Platform
的 command-line 工具,他已事先被安裝在 Cloud Shell
並且支援自動補齊
使用這個 command ,你可以列出有效帳戶名稱:
gcloud auth list |
輸出:
Credentialed accounts: |
範例輸出:
Credentialed accounts: |
你可以使用以下 command 來列出專案 ID
gcloud config list project |
輸出:
[core] |
範例輸出:
[core] |
gcloud
的完整文件可以參閱 Google Cloud gcloud Overview
Pub/Sub 基礎
如同先前提到的, Google Cloud Pub/Sub 是一個異步的全同訊息服務。 這是三個會常出現在 Pub/Sub 用語: topics (主題)
, publishing (發佈)
, 以及 subscribing (訂閱)
topic
是一個被分享的字串, 允許應用間通過一個共同的鏈來連結彼此。- 發布者推送 (或
publish
) 一條訊息到 Cloud Pub/Sub 主題 - 訂閱者向 topic 訂閱, 訂閱可以從訂閱來提取訊息, 或者可通過 webhooks 來推送訂閱。 每一個訂閱者必須在收到訊息後, 在一段設定的時間內給予確認
簡單來說, 一個生產者發布訊息到一個主題, 然後消費者對這個主題建立一個訂閱, 並且從這個訂閱收取訊息
Pub/Sub topic (主題)
Pub/Sub 已被事先安裝在 Google Cloud Shell, 所以要使用這個服務不需要再安裝一次。
執行以下指令來建立一個主題, 名為 myTopic
:
gcloud pubsub topics create myTopic |
測試進度
點擊 Check my progress 來確認目前的進度。如果你已經完成目前的進度,你將獲得一個評價分數。
為了更佳的測試, 在建立兩個主題, 名為 Test1
以及 Test2
gcloud pubsub topics create Test1 |
gcloud pubsub topics create Test2 |
執行以下指令來檢視剛剛建立的主題:
gcloud pubsub topics list |
輸出應會如下:
name: projects/qwiklabs-gcp-3450558d2b043890/topics/myTopic |
清除的時間到了。 執行以下指令來刪除 Test1
以及 Test2
gcloud pubsub topics delete Test1 |
gcloud pubsub topics delete Test2 |
再執行 gloud pubsub topics list
指令一次來確認主題已經被刪除了
gcloud pubsub topics list |
輸出應會如下:
|
Pub/Sub subscription (訂閱)
現在你已經準備好可以建立, 檢視, 刪除主題, 是時候試試看訂閱了
執行以下指令來建立對主題 myTopic
的訂閱, 名為 mySubscription
gcloud pubsub subscriptions create --topic myTopic mySubscription |
測試進度
點擊 Check my progress 來確認目前的進度。如果你已經完成目前的進度,你將獲得一個評價分數。
再多增加兩個對 myTopic
的訂閱, 執行以下指令來建立 Test1
以及 Test2
訂閱
gcloud pubsub subscriptions create --topic myTopic Test1 |
gcloud pubsub subscriptions create --topic myTopic Test2 |
執行以下指令來列出對 topic 的訂閱
gcloud pubsub topics list-subscriptions myTopic |
輸出應會如下:
|
測試你的理解
下面有多重選擇的問題來鞏固你對本教程概念的理解,盡你所能的回答吧:
現在刪除 Test1
以及 Test2
訂閱,執行以下指令:
gcloud pubsub subscriptions delete Test1 |
gcloud pubsub subscriptions delete Test2 |
確認 Test1
以及 Test2
以及被刪除了, 再次執行 list-subscriptions
gcloud pubsub topics list-subscriptions myTopic |
輸出應會如下:
|
Pub/Sub 發布以及提取單一訊息
接下來, 你將會學習如何發布一個訊息到 Pub/Sub 主題
執行以下指令來發布訊息 "hello"
到你剛剛建立的主題 (myTopic
):
gcloud pubsub topics publish myTopic --message "Hello" |
再發布一些訊息到 myTopic
。 執行以下指令 (將 <YOUR NAME>
替換成你的名字, 以及 <FOOD>
替換成一種你喜歡吃的食物):
gcloud pubsub topics publish myTopic --message "Publisher's name is <YOUR NAME>" |
gcloud pubsub topics publish myTopic --message "Publisher likes to eat <FOOD>" |
gcloud pubsub topics publish myTopic --message "Publisher thinks Pub/Sub is awesome" |
接下來, 使用 pull
指令來從主題取得訊息。 pull 是基於訂閱的指令, 也就是說這應該會運作正常, 因為早些時候你已經設定好了對主題 myTopic
的訂閱 mySubscription
使用以下指令來提取你剛剛從 Pub/Sub 主題發布的訊息
gcloud pubsub subscriptions pull mySubscription --auto-ack |
輸出應會如下:
在最後一個章節, 你將會學習如何使用 flag 來從主題提取多個訊息
Pub/Sub 從訂閱提取所有訊息
因為在上一個範例中, 你已經從你的主題提取了所有的訊息, 所以現在加載更多訊息到主題 myTopic
執行以下指令:
gcloud pubsub topics publish myTopic --message "Publisher is starting to get the hang of Pub/Sub" |
gcloud pubsub topics publish myTopic --message "Publisher wonders if all messages will be pulled" |
gcloud pubsub topics publish myTopic --message "Publisher will have to test to find out" |
增加一個 flag
到你的指令, 所以你可以在一個請求中輸出所有三筆訊息。 你可能沒有注意到, 但事實上你一直都在使用 flag
: pull
指令中的 --auto-ack
就是一個你剛剛才用過的可以將你的訊息格式化成整齊的視窗的一個指令
limit
是另外一個 flag, 可以設定提取訊息數量的最高限制
gcloud pubsub subscriptions pull mySubscription --auto-ack --limit=3 |
輸出應會如下:
現在你已經知道如何加 flag 到 Pub/Sub 的指令上來輸出大量的訊息, 你已經走在成為 Pub/Sub 大師的路上。
恭喜
在本教程中, 你學到了 Pub/Sub 主題, 訂閱, 以及提取指令和 flag 的指令
留言