public async Task SubscribeAsync <T>(string topic, IActor <T> actor)
        {
            using (await _lock.LockAsync())
            {
                if (_pool.ContainsKey(topic) == true)
                {
                    throw new Exception("Topic already registered with existing actor.");
                }
                var queue = await _bus.Settings.GetReadQueueAsync(topic);

                var rmqSubscription = new RmqSubscription <T>(topic, _bus, actor, queue);
                _pool[topic] = new Tuple <ReadQueue, ISubscription>(queue, rmqSubscription);
            }
        }