/// <summary>
        /// Initializes a new instance of the <see cref="RabbitMqMessageReceiver"/> class
        /// </summary>
        /// <param name="channel">A <see cref="IRabbitMqChannel"/> representing a channel to the RabbitMQ broker</param>
        /// <param name="deserializer">A <see cref="IDeserializer{T}"/> instance used for de-serialization of messages received from the feed</param>
        /// <param name="keyParser">A <see cref="IRoutingKeyParser"/> used to parse the rabbit's routing key</param>
        /// <param name="producerManager">An <see cref="IProducerManager"/> used to get <see cref="IProducer"/></param>
        public RabbitMqMessageReceiver(IRabbitMqChannel channel, IDeserializer <FeedMessage> deserializer, IRoutingKeyParser keyParser, IProducerManager producerManager)
        {
            Contract.Requires(channel != null);
            Contract.Requires(deserializer != null);
            Contract.Requires(keyParser != null);
            Contract.Requires(producerManager != null);

            _channel         = channel;
            _deserializer    = deserializer;
            _keyParser       = keyParser;
            _producerManager = producerManager;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="RabbitMqMessageReceiver"/> class
        /// </summary>
        /// <param name="channel">A <see cref="IRabbitMqChannel"/> representing a channel to the RabbitMQ broker</param>
        /// <param name="deserializer">A <see cref="IDeserializer{T}"/> instance used for deserialization of messages received from the feed</param>
        /// <param name="keyParser">A <see cref="IRoutingKeyParser"/> used to parse the rabbit's routing key</param>
        /// <param name="producerManager">An <see cref="IProducerManager"/> used to get <see cref="IProducer"/></param>
        /// <param name="usedReplay">Is connected to the replay server</param>
        public RabbitMqMessageReceiver(IRabbitMqChannel channel, IDeserializer <FeedMessage> deserializer, IRoutingKeyParser keyParser, IProducerManager producerManager, bool usedReplay)
        {
            Guard.Argument(channel, nameof(channel)).NotNull();
            Guard.Argument(deserializer, nameof(deserializer)).NotNull();
            Guard.Argument(keyParser, nameof(keyParser)).NotNull();
            Guard.Argument(producerManager, nameof(producerManager)).NotNull();

            _channel         = channel;
            _deserializer    = deserializer;
            _keyParser       = keyParser;
            _producerManager = producerManager;
            _useReplay       = usedReplay;
        }