async Task<Message> readNextMessageAsync()
{
int retryAttempts = 0;
var receiveRequest = new ReceiveMessageRequest() { QueueUrl = this.queueUrl, MaxNumberOfMessages = 1 };
while (true)
{
try
{
var receiveResponse = await this.sqsClient.ReceiveMessageAsync(receiveRequest).ConfigureAwait(false);
retryAttempts = 0;
if (receiveResponse.Messages.Count == 0)
{
await Task.Delay((int)(this.options.PollingInterval * 1000 * 60)).ConfigureAwait(false);
continue;
}
return receiveResponse.Messages[0];
}
catch (Exception)
{
retryAttempts++;
if (retryAttempts <= MAX_OPERATION_RETRY)
Task.Delay(1000 * 60).Wait();
else
throw;
}
}
}