package queue import ( "context" "github.com/aws/aws-sdk-go-v2/service/sqs" ) type ReceiveParams struct { QueueURL string Attributes []string VisibilityTimeout int32 WaitTimeSeconds int32 } func (c *QueueConfig) ReceiveFromQueue(ctx context.Context, params *ReceiveParams) (*sqs.ReceiveMessageOutput, error) { p := &sqs.ReceiveMessageInput{ QueueUrl: ¶ms.QueueURL, MaxNumberOfMessages: 1, WaitTimeSeconds: 10, VisibilityTimeout: 10, MessageAttributeNames: params.Attributes, } if params.VisibilityTimeout > 0 { p.VisibilityTimeout = params.VisibilityTimeout } if params.WaitTimeSeconds > 0 { p.WaitTimeSeconds = params.WaitTimeSeconds } return c.QueueClient.ReceiveMessage(ctx, p) }