みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Cloud Pub/Sub の再試行

Cloud Pub/Sub の再試行の動作確認をしました.Terraform で以下のように topic と subscription を作成しました.なお,subscription は一瞬で status code 500 を返す web サーバーに push するよう設定しました.

resource "google_pubsub_topic" "test" {
  name = "test-topic"
}

resource "google_pubsub_subscription" "test" {
  name                       = "test-subscription"
  topic                      = google_pubsub_topic.test.name
  ack_deadline_seconds       = 600
  message_retention_duration = "2400s"
  retry_policy {
    minimum_backoff = "60s"
    maximum_backoff = "600s"
  }
  push_config {
    ...
  }
}

実行される時刻を記録したところ,以下のようになりました.なお,時刻の差を括弧内に付記しています.

2022-12-21 20:00:07.754 JST
2022-12-21 20:01:19.265 JST (72s)
2022-12-21 20:02:47.744 JST (88s)
2022-12-21 20:04:26.106 JST (98s)
2022-12-21 20:06:41.468 JST (135s)
2022-12-21 20:09:47.830 JST (186s)
2022-12-21 20:13:33.489 JST (226s)
2022-12-21 20:17:10.155 JST (217s)
2022-12-21 20:21:35.003 JST (265s)
2022-12-21 20:29:21.875 JST (467s)
2022-12-21 20:37:43.405 JST (502s)

retry_policy.minimum_backoff から徐々に増加して,retry_policy.maximum_backoff の値に近づくように変化しました.また,message_retention_duration の値 (40分) が経過した段階 (20:40 JST) で再試行は終了しました.

再試行のタイミングは秒単位で正確なわけではないものの,概ね設定した通りの動作となることが分かりました.