Esempio n. 1
0
        /// <summary>
        /// 重试,(有等待时间,有重试次数限制)
        /// </summary>
        /// <param name="response"></param>
        /// <returns></returns>
        public static MessageCarrier WaitAndRetry(this MessageResponse response, Func <int, int> retryAttempt, int maxRetries)
        {
            var @event          = MessageCarrier.Clone(response);
            var numberOfRetries = response.GetNumberOfRetries();
            var TTL             = retryAttempt(numberOfRetries);

            //当前重试次数小于最大重试次数
            if (numberOfRetries < maxRetries)
            {
                @event.WithWait(TTL);
                @event.WithRetry(maxRetries, ++numberOfRetries);
            }
            else
            {
                @event.WithNoRetry();
            }

            return(@event);
        }