void IConsumerConfigurationObserver.ConsumerMessageConfigured <TConsumer, TMessage>(IConsumerMessageConfigurator <TConsumer, TMessage> configurator)
        {
            Tuple <Type, Type> key = Tuple.Create(typeof(TConsumer), typeof(TMessage));

            if (_messageTypes.Contains(key))
            {
                return;
            }

            _messageTypes.Add(key);

            var redeliverySpecification = new DelayedExchangeRedeliveryPipeSpecification <TMessage>();

            _configurator.AddPipeSpecification(redeliverySpecification);

            var retrySpecification = new RedeliveryRetryPipeSpecification <TMessage>();

            _configure(retrySpecification);

            _configurator.AddPipeSpecification(retrySpecification);
        }