Example #1
0
        private void ThrottleRouteDiscoveryRequests(CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                try
                {
                    IList <MessageRoute> missingRoutes;
                    if (requests.TryPeek(out missingRoutes, discoveryConfiguration.MissingRoutesDiscoveryRequestsPerSend))
                    {
                        foreach (var messageRoute in missingRoutes)
                        {
                            SendDiscoverMessageRouteMessage(messageRoute);
                        }
                    }

                    discoveryConfiguration.MissingRoutesDiscoverySendingPeriod.Sleep(token);

                    requests.TryDelete(missingRoutes);
                }
                catch (OperationCanceledException)
                {
                }
                catch (Exception err)
                {
                    logger.Error(err);
                }
            }
        }
Example #2
0
        public void TryDelete_DeletesOnlySpecificItems()
        {
            var queue = new HashedQueue <MessageIdentifier>();

            var ms1 = CreateMessageIdentifier();
            var ms2 = CreateMessageIdentifier();

            queue.TryEnqueue(ms1);
            queue.TryEnqueue(ms2);

            queue.TryDelete(new[] { ms2 });

            IList <MessageIdentifier> messageIdentifiers;

            Assert.IsTrue(queue.TryPeek(out messageIdentifiers, 2));
            Assert.AreEqual(ms1, messageIdentifiers.First());

            queue.TryDelete(new[] { ms1 });
            Assert.IsFalse(queue.TryPeek(out messageIdentifiers, 2));
        }
Example #3
0
        public void TryDelete_DoesntFailIfDeletingMoreItemsThanExist()
        {
            var queue = new HashedQueue <MessageIdentifier>();

            var itemsCount         = 6;
            var messageIdentifiers = Enumerable.Range(0, itemsCount)
                                     .Select(_ => CreateMessageIdentifier())
                                     .ToList();

            for (var i = 0; i < messageIdentifiers.Count - 2; i++)
            {
                queue.TryEnqueue(CreateMessageIdentifier());
            }

            queue.TryDelete(messageIdentifiers);
        }