예제 #1
0
        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;
        }
예제 #2
0
        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;
        }