/// <summary> /// Gets messages from an SQS queue. /// </summary> /// <param name="queueUrl">The sqs queue endpoint to get the messages from.</param> /// <param name="maxMessages">The maximum number of messages to return (max 10)</param> /// <param name="visibilityTimeout">The number of minutes to hide the message from other consumers for (max 12 hours or 720 minutes)</param> /// <returns></returns> public static Amazon.SQS.Model.ReceiveMessageResponse ReceiveMessages(string queueUrl, int maxMessages = 10, int visibilityTimeout = 0) { // Check for the maximum number of messages to get. if (maxMessages > 10) throw new ArgumentException("The maximum number of messages that can be returned is 10"); // Check that the visibility timeout is okay. if (visibilityTimeout > 720) throw new ArgumentException("The maximum amount of time that the message can be hidden for is 12 hours."); // Get the messages from the queue. Amazon.SQS.Model.ReceiveMessageResponse response = new Amazon.SQS.Model.ReceiveMessageResponse(); using (Amazon.SQS.IAmazonSQS client = new Factory().SQSClient()) { Amazon.SQS.Model.ReceiveMessageRequest request = new Amazon.SQS.Model.ReceiveMessageRequest() { QueueUrl = queueUrl, MaxNumberOfMessages = maxMessages }; if (visibilityTimeout > 0) { request.VisibilityTimeout = visibilityTimeout; } response = client.ReceiveMessage(request); } return response; }