private async Task CreateTempQueueAndConsume(IChannel channel)
        {
            // declare temp queue
            var queueName = await channel.QueueDeclare("", passive : false,
                                                       durable : false, exclusive : true, autoDelete : true, arguments : null,
                                                       waitConfirmation : true);

            _queues[queueName.Name] = true;
//
//			Console.WriteLine("Declared " + queueName);

            // Consume
            var consumerTag = await channel.BasicConsume(ConsumeMode.SingleThreaded, delivery =>
            {
                // Console.WriteLine("delivery " + delivery.deliveryTag + " " + queueName.Name);

                return(Task.CompletedTask);
            }, queueName.Name, null, true, false, null, true);

            // give it some time
            await Task.Delay(10000);

            // Cancel consume
            _queues[queueName.Name] = false;
            bool val;

            _queues.TryRemove(queueName.Name, out val);

            await channel.BasicCancel(consumerTag, true);

//
//			Console.WriteLine("Canceled for " + queueName);
        }