Google Cloud Pub/Sub 初探 - Command Line

概述

Google Cloud Pub/Sub 是一個可以讓你再不同的應用以及服務之間交換事件資料的訊息服務。 藉由分離發送者以及接收者, 它提供了一個在獨立、不同的應用之間的安全、高可用的訊息傳遞服務。 Google Cloud Pub/Sub 遞送低延遲/持久的訊息服務, 並且被開發者們廣泛地使用在實作異步工作流程, 分派事件通知, 以及不同的程序以及裝置的資料串流。

在本教程中, 你將會實作以下動作。

  • 學習 Pub/Sub 的基礎
  • 建立, 刪除, 以及列出 Pub/Sub 主題
  • 建立, 刪除, 以及列出 Pub/Sub 訂閱
  • 發布訊息到一個主題
  • 使用提取訂閱者來輸出各自的主題訊息
  • 使用提取訂閱者以及不同的 flag 來輸出多個訊息


前提

這是一個入們級別的教程。 如果你只有一點 Pub/Sub 的相關經驗或是完全沒有經驗都是 okay 的, 且本教程會教你基本的設定以及使用 GCP 服務

在本教程之前, 評估一下你 Pub/Sub 的熟練度。
以下是一些更有挑戰性的教程, 他們可以讓你使用你的 Pub/Sub 的知識在不同的 GCP 服務以及使用情境。

一旦你準備好了, 往下滑並且依照以下的步驟來設定你的教程環境。






前言

本篇主要是利用 Google 的 Qwiklab 平台學習的同時,做的一份學習筆記
為避免翻譯誤解,專業術語在本篇將不會被翻譯,保留原文






設定及要求

在你按下 Start Lab 按鈕之前

詳讀所有的教學。Labs 是有時間限制的,而且你不可以停止時間倒數。倒數計時器在你按下 Start Lab 按鈕後開始倒數,上面顯示的時間為你還能使用 Cloud 資源的時間。

Qwiklabs 的手把手環境,讓你可以在真實環境中來操作進行 Qwiklabs 上提供的課程,而不是在一個模擬或是展示的環境。我們透過提供你一個全新的、暫時的帳號密碼,在計時器歸零之前,你可以用來登入並存取 Google Cloud Platform。

你需要什麼?

要完成這個 lab ,你需要:

  • 一個一般的網路瀏覽器(推薦 Chrome)
  • 完成這個 lab 的時間

備註: 如果你已經有你自己的個人 GCP 帳號或專案,請不要使用在這一個 lab

現在你已經開始你的 lab, 你將會登入 Google Cloud Shell 主控台,然後開啟命令列工具

如何開始你的 lab ,然後登入 Console?

  1. 按下 Start Lab 按鈕。如果你需要付費,會有一個彈出視窗來讓你選擇付費的方式。在左方你會看到一個面板,上面有暫時的帳號密碼,你必須使用這些帳號密碼在此次 lab

  1. 複製 username , 然後點擊 Open Google Console。 Lab 會開啟另外一個視窗,顯示選擇帳號的頁面

tip: 開啟一個全新的視窗,然後跟原本的頁面並排

  1. 選擇帳號頁面, 點擊 Use Another Account

  1. 登入頁面開啟,貼上之前複製的 username 以及 password ,然後貼上

重要:必須使用之前於 Connection Details 面板 取得的帳號密碼,不要使用你自己的 Qwiklabs 帳號密碼。 如果你有自己的 GCP 帳號,請不要用在這裡(避免產生費用)

  1. 點擊並通過接下來的頁面:
    • 接受terms以及conditions
    • 不要增加recovery optoinstwo 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 資源

  1. GCP 控制台 ,右上的工具列,點擊 Open Cloud Shell 按鈕

  1. 在打開的對話框裡,按下 START CLOUD SHELL:

你可以立即按下 START CLOUD SHELL 當對話視窗打開。

連結並提供環境會需要一點時間。當你連結成功,這代表你已成功獲得授權,且此專案已被設為你的專案ID,例如:

gcloudGoogle Cloud Platform 的 command-line 工具,他已事先被安裝在 Cloud Shell 並且支援自動補齊

使用這個 command ,你可以列出有效帳戶名稱:

gcloud auth list

輸出:

Credentialed accounts:
- <myaccount>@<mydomain>.com (active)

範例輸出:

Credentialed accounts:
- google1623327_student@qwiklabs.net

你可以使用以下 command 來列出專案 ID

gcloud config list project

輸出:

[core]
project = <project_ID>

範例輸出:

[core]
project = qwiklabs-gcp-44776a13dea667a6

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:

cloud
gcloud pubsub topics create myTopic


測試進度

點擊 Check my progress 來確認目前的進度。如果你已經完成目前的進度,你將獲得一個評價分數。

為了更佳的測試, 在建立兩個主題, 名為 Test1 以及 Test2

cloud
gcloud pubsub topics create Test1
cloud
gcloud pubsub topics create Test2

執行以下指令來檢視剛剛建立的主題:

cloud
gcloud pubsub topics list

輸出應會如下:

name: projects/qwiklabs-gcp-3450558d2b043890/topics/myTopic
---
name: projects/qwiklabs-gcp-3450558d2b043890/topics/Test2
---
name: projects/qwiklabs-gcp-3450558d2b043890/topics/Test1

清除的時間到了。 執行以下指令來刪除 Test1 以及 Test2

cloud
gcloud pubsub topics delete Test1
cloud
gcloud pubsub topics delete Test2

再執行 gloud pubsub topics list 指令一次來確認主題已經被刪除了

cloud
gcloud pubsub topics list

輸出應會如下:


---
name: projects/qwiklabs-gcp-3450558d2b043890/topics/myTopic






Pub/Sub subscription (訂閱)

現在你已經準備好可以建立, 檢視, 刪除主題, 是時候試試看訂閱了

執行以下指令來建立對主題 myTopic 的訂閱, 名為 mySubscription

cloud
gcloud  pubsub subscriptions create --topic myTopic mySubscription

測試進度

點擊 Check my progress 來確認目前的進度。如果你已經完成目前的進度,你將獲得一個評價分數。

再多增加兩個對 myTopic 的訂閱, 執行以下指令來建立 Test1 以及 Test2 訂閱

cloud
gcloud  pubsub subscriptions create --topic myTopic Test1
cloud
gcloud  pubsub subscriptions create --topic myTopic Test2

執行以下指令來列出對 topic 的訂閱

cloud
gcloud pubsub topics list-subscriptions myTopic

輸出應會如下:


---
projects/qwiklabs-gcp-3450558d2b043890/subscriptions/Test2
---
projects/qwiklabs-gcp-3450558d2b043890/subscriptions/Test1
---
projects/qwiklabs-gcp-3450558d2b043890/subscriptions/mySubscription






測試你的理解

下面有多重選擇的問題來鞏固你對本教程概念的理解,盡你所能的回答吧:

現在刪除 Test1 以及 Test2 訂閱,執行以下指令:

cloud
gcloud pubsub subscriptions delete Test1
cloud
gcloud pubsub subscriptions delete Test2

確認 Test1 以及 Test2 以及被刪除了, 再次執行 list-subscriptions

cloud
gcloud pubsub topics list-subscriptions myTopic

輸出應會如下:


---
projects/qwiklabs-gcp-3450558d2b043890/subscriptions/mySubscription






Pub/Sub 發布以及提取單一訊息

接下來, 你將會學習如何發布一個訊息到 Pub/Sub 主題

執行以下指令來發布訊息 "hello" 到你剛剛建立的主題 (myTopic):

cloud
gcloud pubsub topics publish myTopic --message "Hello"

再發布一些訊息到 myTopic。 執行以下指令 (將 <YOUR NAME> 替換成你的名字, 以及 <FOOD> 替換成一種你喜歡吃的食物):

cloud
gcloud pubsub topics publish myTopic --message "Publisher's name is <YOUR NAME>"
cloud
gcloud pubsub topics publish myTopic --message "Publisher likes to eat <FOOD>"
cloud
gcloud pubsub topics publish myTopic --message "Publisher thinks Pub/Sub is awesome"

接下來, 使用 pull 指令來從主題取得訊息。 pull 是基於訂閱的指令, 也就是說這應該會運作正常, 因為早些時候你已經設定好了對主題 myTopic 的訂閱 mySubscription

使用以下指令來提取你剛剛從 Pub/Sub 主題發布的訊息

cloud
gcloud pubsub subscriptions pull mySubscription --auto-ack

輸出應會如下:

在最後一個章節, 你將會學習如何使用 flag 來從主題提取多個訊息






Pub/Sub 從訂閱提取所有訊息

因為在上一個範例中, 你已經從你的主題提取了所有的訊息, 所以現在加載更多訊息到主題 myTopic

執行以下指令:

cloud
gcloud pubsub topics publish myTopic --message "Publisher is starting to get the hang of Pub/Sub"

cloud
gcloud pubsub topics publish myTopic --message "Publisher wonders if all messages will be pulled"
cloud
gcloud pubsub topics publish myTopic --message "Publisher will have to test to find out"

增加一個 flag 到你的指令, 所以你可以在一個請求中輸出所有三筆訊息。 你可能沒有注意到, 但事實上你一直都在使用 flag: pull 指令中的 --auto-ack 就是一個你剛剛才用過的可以將你的訊息格式化成整齊的視窗的一個指令

limit 是另外一個 flag, 可以設定提取訊息數量的最高限制

cloud
gcloud pubsub subscriptions pull mySubscription --auto-ack --limit=3

輸出應會如下:

現在你已經知道如何加 flag 到 Pub/Sub 的指令上來輸出大量的訊息, 你已經走在成為 Pub/Sub 大師的路上。

恭喜

在本教程中, 你學到了 Pub/Sub 主題, 訂閱, 以及提取指令和 flag 的指令

用 NGINX 配置一個 WebDAV Server Linux 伺服器篇 - 學習筆記

留言

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×