Exemple #1
0
        /// <summary>
        /// Clears all of the items from a queue partition.
        /// </summary>
        private async Task ClearQueueAsync()
        {
            HttpQueueClient <Item> qc = new HttpQueueClient <Item>(new Uri(serviceUri), c_ListenerName);

            Assert.IsNotNull(qc);

            long queueCount = await qc.CountAsync().ConfigureAwait(false);

            long itemCount = await qc.CountAsync(QueueType.ItemQueue);

            // Visit each partition looking for items.
            for (long partition = 0; partition < qc.ServicePartitionCount; partition++)
            {
                // Get the items in this partition.
                IEnumerable <QueueItem <Item> > results = await qc.GetItemsAsync(partition).ConfigureAwait(false);

                foreach (QueueItem <Item> qi in results)
                {
                    var deleteResults = await qc.DeleteItemAsync(qi.Key, CancellationToken.None).ConfigureAwait(false);
                }
            }

            int attempt = qc.ServicePartitionCount;

            // Get the count, there may be items hanging out in the queues, which won't be removed until a dequeue operation for that partition is attempted
            // and the corresponding item is not found in the list of items.
            while ((await qc.CountAsync().ConfigureAwait(false) > 0) && (attempt-- > 0))
            {
                IEnumerable <QueueItem <Item> > results = await qc.DequeueAsync().ConfigureAwait(false);
            }
        }
Exemple #2
0
        public async Task DeleteItems_Test()
        {
            HttpQueueClient <Item> qc = new HttpQueueClient <Item>(new Uri(serviceUri), c_ListenerName);

            Assert.IsNotNull(qc);

            // Check that the count is zero.
            long beginQueueCount = await qc.CountAsync().ConfigureAwait(false);

            long beginItemCount = await qc.CountAsync(QueueType.ItemQueue).ConfigureAwait(false);

            // Add three items to the queue.
            Item[] items         = new Item[] { i1, i2, i3 };
            var    enqueueResult = await qc.EnqueueAsync(items).ConfigureAwait(false);

            Assert.IsNotNull(enqueueResult);

            foreach (QueueItem <Item> item in enqueueResult)
            {
                var deletedItem = await qc.DeleteItemAsync(item.Key, CancellationToken.None).ConfigureAwait(false);

                Assert.AreEqual(item.Key, deletedItem.Key);
                Assert.AreEqual(item.DequeueCount, deletedItem.DequeueCount);
                Assert.AreEqual(item.EnqueueTime, deletedItem.EnqueueTime);
                Assert.AreEqual(item.ExpirationTime, deletedItem.ExpirationTime);
                Assert.IsTrue(item.Item.Equals(deletedItem.Item));
                Assert.AreEqual(item.LeasedUntil, deletedItem.LeasedUntil);
                Assert.AreEqual(item.LeaseDuration, deletedItem.LeaseDuration);
                Assert.AreEqual(item.Queue, deletedItem.Queue);
            }

            Assert.AreEqual(beginQueueCount + items.Count(), await qc.CountAsync().ConfigureAwait(false));
            Assert.AreEqual(beginItemCount, await qc.CountAsync(QueueType.ItemQueue).ConfigureAwait(false));
        }
Exemple #3
0
        /// <summary>
        /// Empties a partition of all items.
        /// </summary>
        private static async Task EmptyAsync()
        {
            int partition = 0, temp;

            Console.WriteLine($"Enter the partition number to retrieve items from. Current value is {partition}: ");
            partition = int.TryParse(Console.ReadLine(), out temp) ? temp : partition;

            HttpQueueClient <Item> qc = new HttpQueueClient <Item>(_serviceUri, c_ListenerName);

            int count = 0;

            do
            {
                var items = await qc.GetItemsAsync(_itemPartition, _itemCount, _itemSkip);

                foreach (var item in items)
                {
                    count++;
                    var i = await qc.DeleteItemAsync(item.Key, CancellationToken.None);
                }
            } while (count > 0);

            Console.WriteLine("Items removed from partition.");
        }