https://qiita.com/ekzemplaro/items/2c47beb962bee54b4609
https://cloud.google.com/pubsub/docs/subscription-overview?hl=ja
pull サブスクリプション : サブスクライバー クライアントを使用して Pub/Sub サーバーにメッセージをリクエストします。
push サブスクリプション : Pub/Sub サーバーを使用してサブスクライバー アプリケーションにリクエストを開始し、メッセージを配信します。
デフォルトでは、サブスクライバーが 31 日間使用されていない場合、またはサブスクリプションが更新されない場合、サブスクリプションは期限切れになります。
デフォルトでは、Pub/Sub トピックは、そのトピックに関連付けられたすべてのサブスクリプションによって確認応答された時点でメッセージを破棄します。
未確認メッセージは、デフォルトで 7 日間保持されます(最小10分、最大31日)
メッセージは、トピックまたはサブスクリプションのメッセージ保持期間(いずれか長い方)だけ保持されます。
トピックのメッセージ保持が設定されていない場合、
経過時間がサブスクリプションの message_retention_duration プロパティを超えると、
サブスクリプションから未確認応答メッセージが削除されます。
一方、トピックのメッセージ保持が設定されている場合、
未確認応答メッセージがサブスクリプションから削除されるのは、
メッセージの経過時間がトピックとサブスクリプションの message_retention_duration の最大値を超える場合だけです。
-- 1. 前作業
gcloud init
gcloud auth list
gcloud --version
gcloud projects create project01-9999999 \
--name="project01"
gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet
gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111
gcloud services enable compute.googleapis.com --project project01-9999999
gcloud components update
-- 2. 動作確認
-- 2.1 サブスクリプション作成前にパブリッシュされたメッセージを受信できないこと
gcloud pubsub topics create topic11
gcloud pubsub topics list
gcloud pubsub topics publish topic11 --message="hello"
gcloud pubsub subscriptions create ss11 --topic=topic11
gcloud pubsub subscriptions list
gcloud pubsub topics list-subscriptions topic11
gcloud pubsub subscriptions pull ss11 --auto-ack
Listed 0 items.
gcloud pubsub subscriptions delete ss11
gcloud pubsub topics delete topic11
-- 2.2 pull前にパブリッシュされたメッセージを受信できること
gcloud pubsub topics create topic21
gcloud pubsub topics list
gcloud pubsub subscriptions create ss21 --topic=topic21
gcloud pubsub subscriptions list
gcloud pubsub topics list-subscriptions topic21
gcloud pubsub topics publish topic21 --message="hello"
gcloud pubsub subscriptions pull ss21 --auto-ack
lqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqwqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqk
x DATA x MESSAGE_ID x ORDERING_KEY x ATTRIBUTES x DELIVERY_ATTEMPT x ACK_STATUS x
tqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqqqnqqqqqqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqu
x hello x 9789531110559463 x x x x SUCCESS x
mqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqvqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqj
gcloud pubsub subscriptions delete ss21
gcloud pubsub topics delete topic21
-- 2.3 pull後にパブリッシュされたメッセージを受信できること
gcloud pubsub topics create topic31
gcloud pubsub topics list
gcloud pubsub subscriptions create ss31 --topic=topic31
gcloud pubsub subscriptions list
gcloud pubsub topics list-subscriptions topic31
gcloud pubsub subscriptions pull ss31 --auto-ack
別タームから実行
gcloud pubsub topics publish topic31 --message="hello"
lqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqwqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqk
x DATA x MESSAGE_ID x ORDERING_KEY x ATTRIBUTES x DELIVERY_ATTEMPT x ACK_STATUS x
tqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqqqnqqqqqqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqu
x hello x 9790368951281326 x x x x SUCCESS x
mqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqvqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqj
gcloud pubsub subscriptions delete ss31
gcloud pubsub topics delete topic31
-- 2.4 2件のメッセージをパブリッシュした場合、pullで2回メッセージを受信できること
gcloud pubsub topics create topic41
gcloud pubsub topics list
gcloud pubsub subscriptions create ss41 --topic=topic41
gcloud pubsub subscriptions list
gcloud pubsub topics list-subscriptions topic41
gcloud pubsub topics publish topic41 --message="hello1"
gcloud pubsub topics publish topic41 --message="hello2"
gcloud pubsub subscriptions pull ss41 --auto-ack
lqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqwqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqk
x DATA x MESSAGE_ID x ORDERING_KEY x ATTRIBUTES x DELIVERY_ATTEMPT x ACK_STATUS x
tqqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqqqnqqqqqqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqu
x hello1 x 9790071176362997 x x x x SUCCESS x
mqqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqvqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqj
gcloud pubsub subscriptions pull ss41 --auto-ack
lqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqwqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqk
x DATA x MESSAGE_ID x ORDERING_KEY x ATTRIBUTES x DELIVERY_ATTEMPT x ACK_STATUS x
tqqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqqqnqqqqqqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqu
x hello2 x 9790644832895413 x x x x SUCCESS x
mqqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqvqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqj
gcloud pubsub subscriptions pull ss41 --auto-ack
Listed 0 items.
gcloud pubsub subscriptions delete ss41
gcloud pubsub topics delete topic41
-- 2.5 メッセージ保持期限10分の場合、10分後にpullしてもメッセージを受信できないこと
gcloud pubsub topics create topic51 --message-retention-duration=10m
gcloud pubsub topics list
gcloud pubsub subscriptions create ss51 --topic=topic51 --message-retention-duration=10m
gcloud pubsub subscriptions list
gcloud pubsub topics list-subscriptions topic51
gcloud pubsub topics publish topic51 --message="hello"
10分待つ
gcloud pubsub subscriptions pull ss51 --auto-ack
Listed 0 items.
gcloud pubsub subscriptions delete ss51
gcloud pubsub topics delete topic51
-- 2.6 確認応答のないサブスクリプションがある場合、メッセージは破棄されないこと
gcloud pubsub topics create topic61
gcloud pubsub topics list
gcloud pubsub subscriptions create ss61 --topic=topic61
gcloud pubsub subscriptions create ss62 --topic=topic61
gcloud pubsub subscriptions list
gcloud pubsub topics list-subscriptions topic61
gcloud pubsub topics publish topic61 --message="hello"
gcloud pubsub subscriptions pull ss61
gcloud pubsub subscriptions pull ss62 --auto-ack
gcloud pubsub subscriptions pull ss62 --auto-ack
Listed 0 items.
gcloud pubsub subscriptions pull ss61 --auto-ack
lqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqwqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqk
x DATA x MESSAGE_ID x ORDERING_KEY x ATTRIBUTES x DELIVERY_ATTEMPT x ACK_STATUS x
tqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqqqnqqqqqqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqu
x hello x 9791189441131290 x x x x SUCCESS x
mqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqvqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqj
gcloud pubsub subscriptions delete ss61
gcloud pubsub subscriptions delete ss62
gcloud pubsub topics delete topic61
-- 2.7 limitオプションで複数のメッセージをpullできること
Please note that this command is not guaranteed to return all the messages
in your backlog or the maximum specified in the --limit argument.
Receiving fewer messages than available occasionally is normal.
gcloud pubsub topics create topic71
gcloud pubsub topics list
gcloud pubsub subscriptions create ss71 --topic=topic71
gcloud pubsub subscriptions list
gcloud pubsub topics list-subscriptions topic71
gcloud pubsub topics publish topic71 --message="hello"
gcloud pubsub topics publish topic71 --message="hello"
gcloud pubsub topics publish topic71 --message="hello"
gcloud pubsub subscriptions pull ss71 --auto-ack --limit 10
lqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqwqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqk
x DATA x MESSAGE_ID x ORDERING_KEY x ATTRIBUTES x DELIVERY_ATTEMPT x ACK_STATUS x
tqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqqqnqqqqqqqqqqqqnqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqu
x hello x 9844628876044695 x x x x SUCCESS x
x hello x 9844525041324332 x x x x SUCCESS x
x hello x 9844327882943317 x x x x SUCCESS x
mqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqvqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqj
gcloud pubsub subscriptions pull ss71 --auto-ack --limit 10
Listed 0 items.
gcloud pubsub subscriptions delete ss71
gcloud pubsub topics delete topic71
-- 3. クリーンアップ
gcloud projects list
gcloud projects delete project01-9999999 --quiet