Exemple #1
0
        /// <summary>
        /// Gets the next item that would be returned from the queue.
        /// </summary>
        private static void Peek()
        {
            HttpQueueClient <Item> qc = new HttpQueueClient <Item>(_serviceUri, c_ListenerName);
            var item = qc.PeekItemAsync().GetAwaiter().GetResult();

            if (QueueItem <Item> .Default == item)
            {
                Console.WriteLine("No items to retrieve.");
            }
            else
            {
                Console.WriteLine($"{item.ToString()}");
            }
        }
Exemple #2
0
        public async Task Component_Test()
        {
            Item i1 = CreateRandomInstance();
            Item i2 = CreateRandomInstance();
            Item i3 = CreateRandomInstance();

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

            Assert.IsNotNull(qc);

            long allBase = await qc.CountAsync(QueueType.AllQueues).ConfigureAwait(false);

            long leaseBase = await qc.CountAsync(QueueType.LeaseQueue).ConfigureAwait(false);

            long expiredBase = await qc.CountAsync(QueueType.ExpiredQueue).ConfigureAwait(false);

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

            // Add an single item to the queue and validate the count has changed.
            await qc.EnqueueAsync(new[] { i1 }, QueueType.FirstQueue, TimeSpan.FromSeconds(30), TimeSpan.FromMinutes(5), CancellationToken.None).ConfigureAwait(false);

            long count = await qc.CountAsync(QueueType.AllQueues).ConfigureAwait(false);

            Assert.AreEqual(1 + allBase, count);
            count = await qc.CountAsync(QueueType.ItemQueue).ConfigureAwait(false);

            Assert.AreEqual(1 + itemsBase, count);

            // Add a batch of items to the queue and validate the count has changed.
            await qc.EnqueueAsync(new[] { i1, i2, i3 }, QueueType.FirstQueue, TimeSpan.FromSeconds(30), TimeSpan.FromMinutes(5), CancellationToken.None).ConfigureAwait(false);

            count = await qc.CountAsync(QueueType.AllQueues, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(4 + allBase, count);
            count = await qc.CountAsync(QueueType.ItemQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(4 + itemsBase, count);

            // Enqueue a single item to the second queue and check the counts.
            await qc.EnqueueAsync(new[] { i1 }, 1, TimeSpan.FromSeconds(30), TimeSpan.FromMinutes(5), CancellationToken.None).ConfigureAwait(false);

            count = await qc.CountAsync(QueueType.AllQueues).ConfigureAwait(false);

            Assert.AreEqual(5 + allBase, count);
            count = await qc.CountAsync(QueueType.ItemQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(5 + itemsBase, count);

            // Dequeue a single item from the first queue and check the counts.
            IEnumerable <QueueItem <Item> > items = await qc.DequeueAsync(1, QueueType.FirstQueue, QueueType.LastQueue, CancellationToken.None).ConfigureAwait(false);

            count = await qc.CountAsync(QueueType.AllQueues, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(4 + allBase, count);
            count = await qc.CountAsync(QueueType.LeaseQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(1 + leaseBase, count);
            count = await qc.CountAsync(QueueType.ItemQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(5 + itemsBase, count);

            // Peek the next item.
            QueueItem <Item> item = await qc.PeekItemAsync(QueueType.FirstQueue, QueueType.LastQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.IsNotNull(item);
            Console.WriteLine(item.ToString());

            // Get a list of the items.
            items = await qc.GetItemsAsync(0, 1000, 0).ConfigureAwait(false);

            foreach (var qi in items)
            {
                Console.WriteLine(qi.Item.Name);
            }

            // Wait for the lease to expire and check the counts.
            Thread.Sleep(TimeSpan.FromSeconds(125));
            count = await qc.CountAsync(QueueType.AllQueues, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(4 + allBase, count);
            count = await qc.CountAsync(QueueType.LeaseQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(0 + leaseBase, count);
            count = await qc.CountAsync(QueueType.ItemQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(5 + itemsBase, count);

            // Dequeue again, release the lease and check the counts.
            items = await qc.DequeueAsync(1, QueueType.FirstQueue, QueueType.LastQueue, CancellationToken.None).ConfigureAwait(false);
            await ReleaseLeasesAsync(qc, items);

            count = await qc.CountAsync(QueueType.AllQueues, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(4 + allBase, count);
            count = await qc.CountAsync(QueueType.LeaseQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(0 + leaseBase, count);
            count = await qc.CountAsync(QueueType.ItemQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(4 + itemsBase, count);

            // Dequeue two, release the lease and check the counts.
            items = await qc.DequeueAsync(2, QueueType.FirstQueue, QueueType.LastQueue, CancellationToken.None).ConfigureAwait(false);
            await ReleaseLeasesAsync(qc, items);

            count = await qc.CountAsync(QueueType.AllQueues, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(2 + allBase, count);
            count = await qc.CountAsync(QueueType.LeaseQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(0 + leaseBase, count);
            count = await qc.CountAsync(QueueType.ItemQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(2 + itemsBase, count);

            // Dequeue two, release the lease and check the counts.
            items = await qc.DequeueAsync(2, QueueType.FirstQueue, QueueType.LastQueue, CancellationToken.None).ConfigureAwait(false);
            await ReleaseLeasesAsync(qc, items);

            count = await qc.CountAsync(QueueType.AllQueues, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(0 + allBase, count);
            count = await qc.CountAsync(QueueType.LeaseQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(0 + leaseBase, count);
            count = await qc.CountAsync(QueueType.ItemQueue, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(0 + itemsBase, count);
        }