public void Start(string queueName, Action <Payload> callback)
        {
            var conn    = _connectionFactory.CreateConnection();
            var channel = _channelFactory.CreateChannel(conn);

            // TODO: Whats the qos default? If it is 0 we need to change
            //channel.BasicQos(prefetchCount:(ushort)5);

            var consumer = new EventingBasicConsumer(channel);

            consumer.Received += (ch, ea) =>
            {
                var consumerNumber = (((EventingBasicConsumer)ch) !).Model.ChannelNumber;
                _logger.LogDebug("EventingBasicConsumer consumer number {consumerNumber}", consumerNumber);

                var body = ea.Body.ToArray();

                var payload = new Payload(body, channel, ea);

                callback(payload);
            };

            // this consumer tag identifies the subscription
            // when it has to be cancelled
            _consumerTag = channel.BasicConsume(queueName, false, consumer);

            _logger.LogInformation("Consumer {consumerTag} ready...", _consumerTag);
        }