/// <summary>
        /// Configure delayed exchange RabbitMQ redelivery for all message types
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="configureRetry"></param>
        public static void UseDelayedRedelivery(this IRabbitMqReceiveEndpointConfigurator configurator, Action <IRetryConfigurator> configureRetry)
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            if (configureRetry == null)
            {
                throw new ArgumentNullException(nameof(configureRetry));
            }

            configurator.ConnectConsumerConfigurationObserver(new DelayedExchangeRedeliveryConsumerConfigurationObserver(configurator, configureRetry));

            configurator.ConnectSagaConfigurationObserver(new DelayedExchangeRedeliverySagaConfigurationObserver(configurator, configureRetry));
        }