public async Task DeleteAsync(params IQueueMessage <T>[] messages) { var handles = messages.Select(m => m.Receipt.Handle).ToArray(); var retryCount = 0; Exception lastError = null; do { try { await client.DeleteMessageBatchAsync(url, handles).ConfigureAwait(false); return; } catch (Exception ex) // TODO: Make sure it's recoverable { lastError = ex; } retryCount++; await Task.Delay(retryPolicy.GetDelay(retryCount)).ConfigureAwait(false); }while (retryPolicy.ShouldRetry(retryCount)); throw lastError; }
public async Task DeleteAsync(params IQueueMessage <string>[] messages) { var receiptHandles = new string[messages.Length]; for (int i = 0; i < messages.Length; i++) { receiptHandles[i] = messages[i].Receipt.Handle; } var retryCount = 0; Exception lastError; do { try { await client.DeleteMessageBatchAsync(url, receiptHandles).ConfigureAwait(false); return; } catch (Exception ex) { // TODO: Make sure it's recoverable lastError = ex; } retryCount++; await Task.Delay(retryPolicy.GetDelay(retryCount)).ConfigureAwait(false); }while (retryPolicy.ShouldRetry(retryCount)); throw lastError; }