From 19ae7e453cef438c287d1c65f55ea34c7c48df89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?France=CC=81=20Wilke?= <francewilke@gmail.com> Date: Sun, 8 May 2022 21:55:16 +0200 Subject: [PATCH] Add SQS support for DelaySeconds --- sqs/sqs.go | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/sqs/sqs.go b/sqs/sqs.go index e9fa2f6..be6deb7 100644 --- a/sqs/sqs.go +++ b/sqs/sqs.go @@ -7,7 +7,6 @@ import ( "fmt" "github.com/google/uuid" "gitlab.com/uafrica/go-utils/s3" - "gitlab.com/uafrica/go-utils/string_utils" "io/ioutil" "time" @@ -29,6 +28,7 @@ type Messenger struct { S3Session *s3.SessionWithHelpers S3BucketName string MessageGroupID *string + DelaySeconds *int64 RequestIDHeaderKey string } @@ -79,22 +79,21 @@ func (m *Messenger) SendSQSMessage(headers map[string]string, body string, curre StringValue: aws.String(sqsType), } + // SQS has max of 15 minutes delay + // https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html + if m.DelaySeconds != nil && aws.Int64Value(m.DelaySeconds) > 900 { + m.DelaySeconds = aws.Int64(900) + } + var res *sqs.SendMessageOutput var err error - if string_utils.UnwrapString(m.MessageGroupID) == "" { - res, err = sqsClient.SendMessage(&sqs.SendMessageInput{ - MessageAttributes: msgAttrs, - MessageBody: aws.String(body), - QueueUrl: &m.QueueURL, - }) - } else { - res, err = sqsClient.SendMessage(&sqs.SendMessageInput{ - MessageAttributes: msgAttrs, - MessageBody: aws.String(body), - QueueUrl: &m.QueueURL, - MessageGroupId: m.MessageGroupID, - }) - } + res, err = sqsClient.SendMessage(&sqs.SendMessageInput{ + MessageAttributes: msgAttrs, + MessageBody: aws.String(body), + QueueUrl: &m.QueueURL, + MessageGroupId: m.MessageGroupID, + DelaySeconds: m.DelaySeconds, + }) if err != nil { return "", err -- GitLab