public async Task DeleteWillRemoveFile()
        {
            await _queue.AddMessageAsync(new CloudQueueMessage("First test message"));

            var message = await _queue.GetMessageAsync();

            await _queue.DeleteMessageAsync(message);

            var files = Directory.GetFiles(BasePath);

            Assert.Empty(files);
        }
Beispiel #2
0
        protected static async Task ProcessMessagesAsync(IAzureQueue <T> queue, IEnumerable <T> messages, Func <T, bool> action)
        {
            if (queue == null)
            {
                throw new ArgumentNullException(nameof(queue));
            }

            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            if (messages == null)
            {
                throw new ArgumentNullException(nameof(messages));
            }

            foreach (var message in messages)
            {
                var allowDelete    = false;
                var corruptMessage = false;

                try
                {
                    allowDelete = action(message);
                }
                catch (Exception ex)
                {
                    TraceHelper.TraceWarning(ex.TraceInformation());
                    allowDelete    = false;
                    corruptMessage = true;
                }
                finally
                {
                    if (allowDelete || (corruptMessage && message.GetMessageReference().DequeueCount > 5))
                    {
                        await queue.DeleteMessageAsync(message).ConfigureAwait(false);
                    }
                }
            }
        }