P2.4: единый путь создания очереди/сообщения (admin переиспользует gosqs)
Добавлены gosqs.BuildQueueForTenant (URL/ARN/дефолты/FIFO-детект как в CreateQueueV1) и gosqs.BuildSqsMessage (UUID+MD5). admin.createTenantQueue и sendMessageToQueue переведены на них: раньше UI создавал очередь без URL/ARN/IsFIFO и сообщение без MD5, теперь поведение UI == SQS API + проверка размера при отправке.
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
// app/gosqs/build.go
|
||||
// Общие билдеры очереди и сообщения — чтобы admin/UI-путь создавал объекты
|
||||
// ровно так же, как SQS API (единый путь, без расхождения дефолтов).
|
||||
package gosqs
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
|
||||
"shared-sqs/app/models"
|
||||
"shared-sqs/app/tenant"
|
||||
"shared-sqs/app/utils"
|
||||
)
|
||||
|
||||
// BuildQueueForTenant — создаёт очередь тенанта с теми же URL/ARN/дефолтами и
|
||||
// FIFO-детектом, что и CreateQueueV1. Используется admin-хендлерами, чтобы
|
||||
// поведение UI совпадало с SQS API (URL/ARN заполнены, .fifo → IsFIFO).
|
||||
func BuildQueueForTenant(t *tenant.Tenant, queueName string) *models.Queue {
|
||||
return &models.Queue{
|
||||
Name: queueName,
|
||||
URL: tenantQueueURL(t, queueName),
|
||||
Arn: tenantQueueARN(t, queueName),
|
||||
VisibilityTimeout: 30,
|
||||
MaximumMessageSize: MaxMessageSizeDefault,
|
||||
MessageRetentionPeriod: 345600, // 4 дня
|
||||
IsFIFO: utils.HasFIFOQueueName(queueName),
|
||||
EnableDuplicates: models.CurrentEnvironment.EnableDuplicates,
|
||||
Messages: []models.SqsMessage{},
|
||||
Duplicates: make(map[string]time.Time),
|
||||
}
|
||||
}
|
||||
|
||||
// BuildSqsMessage — создаёт сообщение с UUID, MD5 тела и временем отправки —
|
||||
// так же, как это делает SendMessageV1 (для admin/UI-пути).
|
||||
func BuildSqsMessage(body string) models.SqsMessage {
|
||||
return models.SqsMessage{
|
||||
MessageBody: body,
|
||||
Uuid: uuid.NewString(),
|
||||
MD5OfMessageBody: utils.GetMD5Hash(body),
|
||||
SentTime: time.Now(),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user