Exemple #1
0
        public void MessageConfigured <TMessage>(IConsumePipeConfigurator configurator)
            where TMessage : class
        {
            var redeliverySpecification = new DelayedExchangeRedeliveryPipeSpecification <TMessage>();

            configurator.AddPipeSpecification(redeliverySpecification);

            var retrySpecification = new RedeliveryRetryPipeSpecification <TMessage>();

            _configure(retrySpecification);

            configurator.AddPipeSpecification(retrySpecification);
        }
        /// <summary>
        /// Use the message scheduler to schedule redelivery of messages based on the retry policy.
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="retryPolicy"></param>
        public static void UseDelayedRedelivery <T>(this IPipeConfigurator <ConsumeContext <T> > configurator, IRetryPolicy retryPolicy)
            where T : class
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            var redeliverySpecification = new DelayedExchangeRedeliveryPipeSpecification <T>();

            configurator.AddPipeSpecification(redeliverySpecification);

            var retrySpecification = new RedeliveryRetryPipeSpecification <T>(retryPolicy);

            configurator.AddPipeSpecification(retrySpecification);
        }
        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);
        }
        protected override void AddRedeliveryPipeSpecification <TMessage>(IConsumePipeConfigurator configurator)
        {
            var redeliverySpecification = new DelayedExchangeRedeliveryPipeSpecification <TMessage>();

            configurator.AddPipeSpecification(redeliverySpecification);
        }