From c011099224e189dd48bb06888d6d0c722d75e61c Mon Sep 17 00:00:00 2001 From: Repinoid Date: Sat, 10 Oct 2026 14:03:44 +0300 Subject: [PATCH] =?UTF-8?q?fix(queue-url):=20seed.go=20=D1=87=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=20gosqs.TenantQueueURL;=20env-override=20=D0=B2=20?= =?UTF-8?q?applyEnvironmentDefaults=20(=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D0=B1=D0=B5=D0=B7=20goaws.yaml)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/cmd/seed.go | 12 ++++-------- app/conf/config.go | 9 ++++----- app/gosqs/tenant_helpers.go | 5 +++++ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/cmd/seed.go b/app/cmd/seed.go index 091b315..659cbc2 100644 --- a/app/cmd/seed.go +++ b/app/cmd/seed.go @@ -16,6 +16,7 @@ import ( "github.com/google/uuid" log "github.com/sirupsen/logrus" + "shared-sqs/app/gosqs" "shared-sqs/app/models" "shared-sqs/app/tenant" ) @@ -82,14 +83,9 @@ func seedDemoData(store *tenant.TenantStore) { // URL и ARN формируем по тому же шаблону что gosqs/tenant_helpers.go:tenantQueueURL/tenantQueueARN // Иначе AWS CLI получает пустой QueueUrl в ListQueues и не может работать с очередью. - env := models.CurrentEnvironment - var queueURL string - if env.Region != "" { - queueURL = "http://" + env.Region + "." + env.Host + ":" + env.Port + "/" + t.ID + "/" + q.name - } else { - queueURL = "http://" + env.Host + ":" + env.Port + "/" + t.ID + "/" + q.name - } - queueARN := "arn:aws:sqs:" + env.Region + ":" + t.ID + ":" + q.name + // URL — единый источник (gosqs.TenantQueueURL), учитывает ExternalURLBase. + queueURL := gosqs.TenantQueueURL(t, q.name) + queueARN := "arn:aws:sqs:" + models.CurrentEnvironment.Region + ":" + t.ID + ":" + q.name msgs := make([]models.SqsMessage, 0, len(q.msgs)) for _, body := range q.msgs { diff --git a/app/conf/config.go b/app/conf/config.go index af9fcb3..52ab81b 100644 --- a/app/conf/config.go +++ b/app/conf/config.go @@ -67,11 +67,6 @@ func LoadYamlConfig(filename string, env string) []string { models.CurrentEnvironment = envs[env] - // Публичный адрес очередей (напр. https://sqs.sinefo.ru) — override через env. - if v := os.Getenv("SHARED_SQS_EXTERNAL_URL_BASE"); v != "" { - models.CurrentEnvironment.ExternalURLBase = v - } - if envs[env].Port != "" { ports = []string{envs[env].Port} } @@ -148,6 +143,10 @@ func LoadYamlConfig(filename string, env string) []string { // AccountID и Host. Вызывается через defer в LoadYamlConfig, чтобы дефолты // устанавливались при любом раннем return (например, если конфиг не найден). func applyEnvironmentDefaults() { + // Публичный адрес очередей — override через env (работает и когда goaws.yaml не найден). + if v := os.Getenv("SHARED_SQS_EXTERNAL_URL_BASE"); v != "" { + models.CurrentEnvironment.ExternalURLBase = v + } if models.CurrentEnvironment.QueueAttributeDefaults.VisibilityTimeout <= 0 { models.CurrentEnvironment.QueueAttributeDefaults.VisibilityTimeout = 30 } diff --git a/app/gosqs/tenant_helpers.go b/app/gosqs/tenant_helpers.go index 623f574..6b57557 100644 --- a/app/gosqs/tenant_helpers.go +++ b/app/gosqs/tenant_helpers.go @@ -41,6 +41,11 @@ return "http://" + region + "." + host + ":" + port + "/" + t.ID + "/" + queueNa return "http://" + host + ":" + port + "/" + t.ID + "/" + queueName } +// TenantQueueURL — экспортированная обёртка над tenantQueueURL (нужна app/cmd). +func TenantQueueURL(t *tenant.Tenant, queueName string) string { +return tenantQueueURL(t, queueName) +} + // tenantQueueARN — формирует ARN очереди для тенанта. func tenantQueueARN(t *tenant.Tenant, queueName string) string { return "arn:aws:sqs:" + models.CurrentEnvironment.Region + ":" + t.ID + ":" + queueName