public void ReceiveMessage_Should_ReceiveMessageAndNotRemoveIt()
        {
            var store = new ClientDetailsStore();
            AwsClientDetails clientDetails = store.Load(Container);

            SQSHelper helper = new SQSHelper(clientDetails);

            string queueUrl = helper.CreateQueue("TestQ");

            // Add a message to the queue to ensure that their is one and wait for 2 seconds to allow
            // the message to propogate.
            // Add the time on to ensure the correct message is received.
            string expectedMessage = "Sample test message " + DateTime.Now.ToLongTimeString();
            helper.SendMessage(expectedMessage, queueUrl);

            // Messages can be very slow to appear on the queue.
            Thread.Sleep(60000);

            // Get the sent message.
            Amazon.SQS.Model.Message message = helper.ReceiveMessage(queueUrl);
            Assert.IsNotNull(message, "No messages");

            try
            {
                Assert.AreEqual(expectedMessage, message.Body, "Expected message body first time");

                // Ensure that we can get the message a second time.
                Amazon.SQS.Model.Message message2 = helper.ReceiveMessage(queueUrl);
                Assert.IsNotNull(message2, "Message should not have been removed.");
                Assert.AreEqual(expectedMessage, message2.Body, "Expected message body second time");
            }
            finally
            {
                // Delete the message.
                helper.DeleteMessage(queueUrl, message.ReceiptHandle);
            }
        }
        private void ReceiveMessage(AwsClientDetails clientDetails)
        {
            using (var helper = new SQSHelper(clientDetails))
            {
                Amazon.SQS.Model.Message message = helper.ReceiveMessage(QueueUrl);

                if (message != null)
                {
                    MessageId = message.MessageId;
                    MessageBody = message.Body;
                    ReceiptHandle = message.ReceiptHandle;
                    HasMessage = true;
                    Log.LogMessage(MessageImportance.Normal, "Recieved message {0} from queue {1}", MessageId, QueueUrl);
                }
                else
                {
                    MessageId = string.Empty;
                    MessageBody = string.Empty;
                    ReceiptHandle = string.Empty;
                    HasMessage = false;
                    Log.LogMessage(MessageImportance.Normal, "No message received from queue {0}", QueueUrl);
                }
            }
        }