48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
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
|
|
}
|