public void Can_remove_empty_temp_queues()
        {
            //Clean up
            sqsQueueManager.RemoveEmptyTemporaryQueues(DateTime.UtcNow.AddDays(5).ToUnixTime());

            var nonEmptyTempQueue = sqsQueueManager.CreateQueue(QueueNames.GetTempQueueName());

            sqsQueueManager.SqsClient.SendMessage(new SendMessageRequest(nonEmptyTempQueue.QueueUrl, "Just some text"));
            sqsQueueManager.SqsClient.SendMessage(new SendMessageRequest(nonEmptyTempQueue.QueueUrl, "Just some more text"));

            var emptyTempQueue1         = sqsQueueManager.CreateQueue(QueueNames.GetTempQueueName());
            var emptyTempQueue2         = sqsQueueManager.CreateQueue(QueueNames.GetTempQueueName());
            var emptyTempQueueNotCached = sqsQueueManager.CreateQueue(QueueNames.GetTempQueueName());

            if (!SqsTestAssert.IsFakeClient)
            {   // List queue doesn't return newly created queues for a bit, so if this a "real", we skip this part
                sqsQueueManager.QueueNameMap.TryRemove(emptyTempQueueNotCached.QueueName, out _);
            }

            var countOfQueuesRemoved = sqsQueueManager.RemoveEmptyTemporaryQueues(DateTime.UtcNow.AddDays(5).ToUnixTime());

            try
            {
                SqsTestAssert.FakeEqualRealGreater(3, 2, countOfQueuesRemoved);
            }
            finally
            {
                // Cleanup
                sqsQueueManager.DeleteQueue(nonEmptyTempQueue.QueueName);
                sqsQueueManager.DeleteQueue(emptyTempQueue1.QueueName);
                sqsQueueManager.DeleteQueue(emptyTempQueue2.QueueName);
                sqsQueueManager.DeleteQueue(emptyTempQueueNotCached.QueueName);
            }
        }
Ejemplo n.º 2
0
        public string GetTempQueueName()
        {   // NOTE: Purposely not creating DLQ queues for all these temps if they get used, they'll get
            // created on the fly as needed if messages actually fail
            var queueDefinition = sqsQueueManager.GetOrCreate(QueueNames.GetTempQueueName());

            return(queueDefinition.QueueName);
        }
Ejemplo n.º 3
0
        public void Can_determine_TempQueue_with_Custom_QueuePrefix()
        {
            QueueNames.SetQueuePrefix("site1.");

            var tmpName = QueueNames.GetTempQueueName();

            Assert.That(QueueNames.IsTempQueue(tmpName), Is.True);

            QueueNames.SetQueuePrefix("");
        }
Ejemplo n.º 4
0
        public string GetTempQueueName()
        {
            var anonMq = Channel.QueueDeclare(
                queue: QueueNames.GetTempQueueName(),
                durable: false,
                exclusive: true,
                autoDelete: true,
                arguments: null);

            return(anonMq.QueueName);
        }
Ejemplo n.º 5
0
        public void Can_determine_TempQueue_with_Custom_QueueNameFm()
        {
            QueueNames.ResolveQueueNameFn = (typeName, suffix) =>
                                            "SITE.{0}{1}".Fmt(typeName, suffix.ToUpper());

            var tmpName = QueueNames.GetTempQueueName();

            Assert.That(QueueNames.IsTempQueue(tmpName), Is.True);

            QueueNames.ResolveQueueNameFn = QueueNames.ResolveQueueName;
        }
Ejemplo n.º 6
0
        public void Can_expire_temp_queues()
        {
            using (var mqServer = (RedisMqServer)CreateMqServer())
                using (var client = mqServer.ClientsManager.GetClient())
                {
                    client.FlushAll();

                    100.Times(i =>
                              client.AddItemToList(QueueNames.GetTempQueueName(), i.ToString()));

                    var itemsToExpire = mqServer.ExpireTemporaryQueues(afterMs: 100);

                    var tmpWildCard = QueueNames.TempMqPrefix + "*";
                    Assert.That(itemsToExpire, Is.EqualTo(100));
                    Assert.That(client.SearchKeys(tmpWildCard).Count, Is.EqualTo(100));
                    Thread.Sleep(200);
                    Assert.That(client.SearchKeys(tmpWildCard).Count, Is.EqualTo(0));
                }
        }
Ejemplo n.º 7
0
 public string GetTempQueueName()
 {
     return(QueueNames.GetTempQueueName());
 }
Ejemplo n.º 8
0
        public void Can_determine_TempQueue()
        {
            var tmpName = QueueNames.GetTempQueueName();

            Assert.That(QueueNames.IsTempQueue(tmpName), Is.True);
        }