diff --git a/terraform/environments/pubsub.tf b/terraform/environments/pubsub.tf index c8c6011ff496a9c170d8214ee40a27d1f69d8343..a8c1b36a8ef4bfc7b4e698c6fd222799c5924eec 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 0df18735f57b6a7505896caebcae485e43f2e143..41936543d887d15df233199c53500b31f723cbca 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" }