chore: initial import from sless/shared-sqs (v0.1.14)

- Standalone SQS-service repository
- Multi-tenant message queue service, AWS SQS compatible
- Based on GoAws, with mutable tenants, auth, WebUI, Redis persistence
- Ready for independent development and deployment
- See doc/ and README.md for architecture and usage
This commit is contained in:
Naeel
2026-04-10 16:47:27 +03:00
commit c3ba2dcae4
81 changed files with 14253 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
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 {
// FIXME - are there better places to put these bottom-limit validations?
if attr.DelaySeconds >= 0 {
q.DelaySeconds = attr.DelaySeconds.Int()
}
if attr.MaximumMessageSize >= 0 {
q.MaximumMessageSize = attr.MaximumMessageSize.Int()
}
// TODO - bottom limit should be the AWS limits
// The following 2 don't support zero values
if attr.MessageRetentionPeriod > 0 {
q.MessageRetentionPeriod = attr.MessageRetentionPeriod.Int()
}
if attr.ReceiveMessageWaitTimeSeconds > 0 {
q.ReceiveMessageWaitTimeSeconds = attr.ReceiveMessageWaitTimeSeconds.Int()
}
if attr.VisibilityTimeout >= 0 {
q.VisibilityTimeout = attr.VisibilityTimeout.Int()
}
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
}