Esempio n. 1
0
        /// <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 UseScheduledRedelivery <T>(this IPipeConfigurator <ConsumeContext <T> > configurator, IRetryPolicy retryPolicy)
            where T : class
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            var redeliverySpecification = new ScheduleMessageRedeliveryPipeSpecification <T>();

            configurator.AddPipeSpecification(redeliverySpecification);

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

            configurator.AddPipeSpecification(retrySpecification);
        }
Esempio n. 2
0
        /// <summary>
        /// Use the message scheduler to schedule redelivery of a specific message type based upon the retry policy.
        /// </summary>
        /// <param name="configurator"></param>
        /// <param name="retryPolicy"></param>
        public static void UseScheduledRedelivery <T>(this IPipeConfigurator <ConsumeContext <T> > configurator, IRetryPolicy retryPolicy)
            where T : class
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            var redeliverySpecification = new ScheduleMessageRedeliveryPipeSpecification <T>();

            configurator.AddPipeSpecification(redeliverySpecification);

            var retrySpecification = new RedeliveryRetryPipeSpecification <T>();

            retrySpecification.SetRetryPolicy(exceptionFilter =>
                                              new ConsumeContextRetryPolicy <ConsumeContext <T>, RetryConsumeContext <T> >(retryPolicy, CancellationToken.None, Factory));

            configurator.AddPipeSpecification(retrySpecification);
        }