Inheritance: RabbitMQ.Client.DefaultBasicConsumer, IStreamSubscriber, IDisposable
        protected virtual void AddConsumerToQueue(IConsumer consumer)
        {
            var queue = consumer.GetQueueDetails();

            if (queue == null || string.IsNullOrEmpty(queue.Name))
            {
                throw new Exception("Invalid queue details");
            }


            if (!CanPerformChannelOperations)
            {
                throw new InvalidOperationException("Cannot accept new consumers at the moment");
            }

            var model = _streamConnection.CreateModel();
            StreamSubscriber subscriber = null;

            try
            {
                subscriber = new StreamSubscriber(model, consumer, Dispatcher);
                subscriber.StartConsuming(queue.Name);
            }
            catch
            {
                if (subscriber != null)
                {
                    subscriber.Dispose();
                }

                throw;
            }
        }
        protected virtual void AddConsumerToQueue(IConsumer consumer)
        {

            var queue = consumer.GetQueueDetails();
            if (queue == null || string.IsNullOrEmpty(queue.Name))
                throw new Exception("Invalid queue details");


            if(!CanPerformChannelOperations)
                throw new InvalidOperationException("Cannot accept new consumers at the moment");

            var model = _streamConnection.CreateModel();
            StreamSubscriber subscriber = null;

            try
            {                 
                subscriber = new StreamSubscriber(model, consumer, Dispatcher);
                subscriber.StartConsuming(queue.Name);
            }
            catch
            {
                if (subscriber != null)
                    subscriber.Dispose();

                throw;
            }
        }