package gosqs import ( "fmt" "strings" log "github.com/sirupsen/logrus" "shared-sqs/app/models" ) // TODO - Support: // - attr.MessageRetentionPeriod // - attr.Policy // - attr.RedriveAllowPolicy func setQueueAttributesV1(q *models.Queue, attr models.QueueAttributes) error { // AWS-совместимые лимиты: clamp значений к допустимым диапазонам if attr.DelaySeconds >= 0 { q.DelaySeconds = ClampInt(attr.DelaySeconds.Int(), 0, MaxDelaySeconds) } if attr.MaximumMessageSize >= 0 { q.MaximumMessageSize = ClampInt(attr.MaximumMessageSize.Int(), MinMessageSizeLimit, MaxMessageSizeLimit) } if attr.MessageRetentionPeriod > 0 { q.MessageRetentionPeriod = ClampInt(attr.MessageRetentionPeriod.Int(), MinMessageRetentionPeriod, MaxMessageRetentionPeriod) } if attr.ReceiveMessageWaitTimeSeconds > 0 { q.ReceiveMessageWaitTimeSeconds = ClampInt(attr.ReceiveMessageWaitTimeSeconds.Int(), 0, MaxReceiveMessageWaitTimeSeconds) } if attr.VisibilityTimeout >= 0 { q.VisibilityTimeout = ClampInt(attr.VisibilityTimeout.Int(), 0, MaxVisibilityTimeout) } if attr.RedrivePolicy != (models.RedrivePolicy{}) { arnArray := strings.Split(attr.RedrivePolicy.DeadLetterTargetArn, ":") queueName := arnArray[len(arnArray)-1] deadLetterQueue, ok := models.SyncQueues.Queues[queueName] if !ok { log.Error("Invalid RedrivePolicy Attribute") return fmt.Errorf("InvalidAttributeValue") } q.DeadLetterQueue = deadLetterQueue q.MaxReceiveCount = attr.RedrivePolicy.MaxReceiveCount.Int() } return nil }