Pada lab ini akan membuat Topics dan Subscriptions melalui program. Kemudian Publish dan consume melalui aplikasi. Bahasa yang akan digunakan adalah Python.
Untuk mengikuti tutorial ini diperlukan GCP project, Cloud Console, Cloud Shell dan Cloud Shell Editor untuk menulis code Python.
Buka Cloud Shell dengan menekan tombol Cloud Shell.

Kemudian jalankan juga Cloud Shell Editor.

Berikut tampilan window setelah Cloud Shell Editor dijalankan.

Jika Cloud Shell terpisah dari Cloud Console (kadang kala bisa terjadi). Anda dapat jalankan perintah berikut (gunakan project ID yang Anda gunakan).
$ gcloud config set project project_id_yang_digunakan
Lab akan menggunakan Python, ada beberapa langkah persiapan.
Pertama pastikan cloud shell up-to-date.
$ sudo apt-get update
Kemudian install virtual environment untuk menjalankan isolated Python environment.
$ sudo apt-get install virtualenv
Selanjutnya buat virtual environment, pada tutorial akan digunakan venv, jika Anda sudah memiliki direktori venv, Anda harus menggunakan nama virtual environment lain.
$ virtualenv -p python3 venv
Selanjutnya aktifkan environment yang baru dibuat diatas.
$ source venv/bin/activate
Setelah didalam virtual environment, kita install library untuk Pub/Sub menggunakan pip.
$ pip install --upgrade google-cloud-pubsub
Setelah instalasi selesai, kita ambil contoh dari Google Cloud github repo.
$ git clone https://github.com/GoogleCloudPlatform/python-docs-sample.git
#link untuk bahasa lain
# https://github.com/GoogleCloudPlatform/dotnet-docs-samples
# https://github.com/GoogleCloudPlatform/golang-samples
# https://github.com/GoogleCloudPlatform/java-docs-samples
# https://github.com/GoogleCloudPlatform/php-docs-samples
# https://github.com/GoogleCloudPlatform/ruby-docs-samples
# https://github.com/googleapis/nodejs-pubsub
Setelah proses clone selesai, buka file python-docs-samples/pubsub/cloud-client/publisher.py. Anda juga perlu mengubah direktori pada Cloud Shell.
$ cd python-docs-samples/pubsub/cloud-client/
Membuat Topics
Setelah masuk ke direktori yang dimaksud, kita akan menggunakan script python samples dari Google untuk membuat topics.
$ python publisher.py nama_gcp_project create nama_topic
Anda dapat lihat code Python untuk membuat topic pada baris 42. Dapat dilihat fungsi yang dijalanka yaitu create_topic.

Anda dapat periksa Topic yang dibuat dengan perintah
$ gcloud pubsub topics list
Membuat Subscribers
Pada direktori yang sama, buka subscriber.py melalui Cloud Shell Editor. Dengan menggunakan subscriber.py kita akan membuat subscriber.
$ python subscriber.py nama_gcp_project create nama_topic nama_subscription
Anda dapat lihat fungsi Python untuk membuat subcription pada baris 58.

Menerima Messages
Untuk menerima messages, masih pada file subscriber.py pada baris ke 166, yaitu fungsi receive_messages().

Untuk menerima message jalankan perintah berikut:
$ python subscriber.py nama_project receive nama_subscription
Program akan berjalan dan listening untuk message.
Untuk latihan, kita akan membuat program python untuk publish messages.
Buka terminal window (shell) baru. Kemudian aktifkan virtual environment dan masuk ke direktori diatas.
$ source venv/bin/activate
$ cd python-docs-samples/pubsub/cloud-client/
Melalu Cloud Shell Editor, buat file baru, silakan beri nama sesuai keinginan Anda, pada tutorial digunakan bored.py, pada program kita akan mengakses boredapi.com untuk mendapatkan message, kemudian kita publish di Google PubSub service.
from google.cloud import pubsub_v1
import requests
import time
project_name = "gunakan nama project Anda"
topic_name = "gunakan nama topic Anda"
api = "https://www.boredapi.com/api/activity"
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_name, topic_name)
while True:
response = requests.get(api).text
publisher.publish(topic_path, data=response.encode('utf-8'))
time.sleep(10)
Jalankan script diatas melalui terminal yang baru dibuat.
$ python bored.py
Jika kita kembali ke terminal sebelumnya, dimana kita menjalankan perintah untuk receive messages. Kita dapat lihat message dari boredapi.com akan muncul setiap 10 detik.

Sampai disini lab sudah selesai. Untuk menghentikan proses, tekan tombol Ctrl+C pada kedua terminal.
Berikutnya jangan lupa untuk menghapus Topics dan Subscriptions.
$ gcloud pubsub subscriptions delete nama_subscriptions
$ gcloud pubsub topics delete nama_topics