GCP Pub/Sub 實作紀錄

Jeff Hsieh
3 min readOct 12, 2018

採用方式:Quickstart: Using Client Libraries
https://cloud.google.com/pubsub/docs/quickstart-client-libraries

Step1:取得Private key JSON
按照說明直接取得Private key的JSON檔

Step2:安裝Cloud SDK
https://cloud.google.com/sdk/docs/

Step3:設定 GOOGLE_APPLICATION_CREDENTIALS 環境變數
設定$PATH指向剛剛下載的Private key,連線進Pub/Sub需要,如果用Eclipse開發則需設定Run configuration中的環境變數

Step4:Pub/Sub建立Topic和Subscription
使用Command line在Pub/Sub中建立topic和subscription
建立Topic:gcloud pubsub topics create my-topic
建立Subscription:gcloud pubsub subscriptions create my-sub — topic my-topic

Step5:實作範例code
實作Quickstart內的Code,如果用Eclipse直接跑記得修改args,如果用gradle引入GCP library的話記得要在專案右鍵refresh

測試結果:
Publisher發佈的訊息id:
225525887144043
225525887144044
225535532639077
225535532639078
225535532639079
225535532639080
225535532639081
225535532639082
225535532639083
225535532639084

Subscriber收到的結果:
Message Id: 225535532639077
Data: message-2
Message Id: 225535532639078
Data: message-3
Message Id: 225535532639079
Data: message-4
Message Id: 225535532639080
Data: message-5
Message Id: 225535532639081
Data: message-6
Message Id: 225535532639082
Data: message-7
Message Id: 225535532639083
Data: message-8
Message Id: 225535532639084
Data: message-9
Message Id: 225525887144043
Data: message-0
Message Id: 225525887144044
Data: message-1

可以看到Pub/Sub不保證存取順序

結論:
Pub/Sub主要是給大數據分析使用,在處理大量資料時有利,但如果是要接Market data等需要即時性、High throughput和Low latency時在效能上比較不夠力,可以考慮其他MQ服務,如Chronicle Queue、Kafka、RabbitMQ等等

--

--

Jeff Hsieh

資深後端工程師,熟悉JAVA與現代網頁後端技術與框架,並具備金融市場交易知識