From 8e01fe1d2174b0a8e46d821129643c190d0cd496 Mon Sep 17 00:00:00 2001 From: Alexander Timmermann <alexander.timmermann@holi.social> Date: Tue, 21 Jan 2025 12:33:46 +0100 Subject: [PATCH] feat(infra): add DLQ topic and retry policy for pubsub --- terraform/environments/pubsub.tf | 20 +++++++++++++++++++- terraform/environments/vars.tf | 2 ++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/terraform/environments/pubsub.tf b/terraform/environments/pubsub.tf index c8c6011..a8c1b36 100644 --- a/terraform/environments/pubsub.tf +++ b/terraform/environments/pubsub.tf @@ -1,8 +1,16 @@ +locals { + main_topic = local.is_production ? data.terraform_remote_state.okuna_common_state.outputs.google_pubsub_topic_okuna_production : data.terraform_remote_state.okuna_common_state.outputs.google_pubsub_topic_okuna_staging + dlq_topic = local.is_production ? data.terraform_remote_state.okuna_common_state.outputs.google_pubsub_topic_okuna_production_dlq : data.terraform_remote_state.okuna_common_state.outputs.google_pubsub_topic_okuna_staging_dlq + + max_attemts = 10 + min_backoff = "2s" + max_backoff = "10s" +} resource "google_pubsub_subscription" "holi-chat-integration-okuna-sub" { project = data.terraform_remote_state.holi_infra_state.outputs.shared_project_id name = random_id.main.hex - topic = local.environment_name == "production" ? data.terraform_remote_state.okuna_common_state.outputs.google_pubsub_topic_okuna_production : data.terraform_remote_state.okuna_common_state.outputs.google_pubsub_topic_okuna_staging + topic = local.main_topic ack_deadline_seconds = 10 * 60 # 10 minutes, max. value expiration_policy { @@ -16,4 +24,14 @@ resource "google_pubsub_subscription" "holi-chat-integration-okuna-sub" { service_account_email = data.terraform_remote_state.holi_chat_integration_common_state.outputs.function_service_account } } + + retry_policy { + minimum_backoff = local.min_backoff + maximum_backoff = local.max_backoff + } + + dead_letter_policy { + dead_letter_topic = local.dlq_topic + max_delivery_attempts = local.max_attemts + } } diff --git a/terraform/environments/vars.tf b/terraform/environments/vars.tf index 0df1873..4193654 100644 --- a/terraform/environments/vars.tf +++ b/terraform/environments/vars.tf @@ -5,4 +5,6 @@ locals { environment_type = contains(["staging", "production"], local.environment) ? local.environment : "review" default_region = data.terraform_remote_state.holi_infra_state.outputs.default_region + + is_production = local.environment_name == "production" } -- GitLab