IEnumerator RepeatRetrieveMessage(float waitTime) { bool checkSQS = true; while (checkSQS) { yield return(new WaitForSeconds(waitTime)); if (!string.IsNullOrEmpty(queueUrl)) { SqsClient.ReceiveMessageAsync(queueUrl, (result) => { if (result.Exception == null) { //Read the message var messages = result.Response.Messages; messages.ForEach(m => { RemoteCommand command = RemoteCommand.CreateFromJSON(m.Body); Debug.Log(@"Target " + command.target); int index = Int32.Parse(command.target); activateCam(index); Debug.Log(@"Done switching camera"); //Delete the message var delRequest = new Amazon.SQS.Model.DeleteMessageRequest { QueueUrl = queueUrl, ReceiptHandle = m.ReceiptHandle }; SqsClient.DeleteMessageAsync(delRequest, (delResult) => { if (delResult.Exception == null) { } else { } }); Debug.Log(@"Done processing message "); }); } else { Debug.Log(result.Exception); Debug.LogException(result.Exception); } }); } else { Debug.Log(@"Queue Url is empty, make sure that the queue is created first"); } } }