Cloud PubSubのAcknoledgeがよくわからなかったのでまとめ。基本pullのsubscriptionであることを前提としています。すべて公式docに載っている内容です。
Cloud PubSubとは?
イケてるマネージドキューサービス
https://cloud.google.com/pubsub/docs/overview
Pubsubのack(Acknowlede)とは?
- サブスクライバーがpubsubに送る確認応答のこと
- pubsubはacknowledeを受け取ると、message storageからメッセージを削除する
- ackDeadliceSecondsで設定された期限前にackされない場合は、subscriberに再送信される(デフォルト10秒/最大10分)
- ackは関係ないけどPubSubのメッセージ保持期間はmessageRetentionDurationで設定された期間(デフォルト/最大値は7日で最小は10分)
- サブスクリプションの設定
Acknowledeの確認方法
% gcloud alpha pubsub subscriptions describe sub_name (
ackDeadlineSeconds: 10
expirationPolicy:
ttl: 2678400s
messageRetentionDuration: 604800s
name: projects/xxx/subscriptions/sub_name
pushConfig: {}
topic: projects/xxx/topics/topic_name
-
ackDeadliceSeconds
: subscriberがackするまでのdeadline- 値が10だった10秒以内にackされない場合は再送信される
-
expirationPolicy
: subscriptionのexpiration設定。- 値が31日だった場合、subscriptionがactive(subscriberが処理に成功する)にならない場合はsubscriptionは削除される(default31日/最小1日)
-
messageRetentionDuration
: publish後にmessage storageに保持する期間- この値が7日だった場合、7日間ackされないmessageは削除される。(デフォルト最大7日/最小10分)
-
retainAckedMessages
がtrueの場合はこの値はack後seek可能な期間となる
- [subscription create options] (https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions/create)
AckDeadlineSecondsを変更したい場合
gcloud alpha pubsub subscriptions update subscription_name --ack-deadline=11