Beispiel #1
0
        /// <summary>
        ///     Sets the method called when a message handler fails (throws an exception)
        /// </summary>
        /// <typeparam name="TMessageType">The message type</typeparam>
        /// <param name="builder">The retry builder</param>
        /// <param name="handlerFailedFunc">The method to call when the message handler fails. Return false to cancel further retry attempts.</param>
        /// <returns>A retry builder</returns>
        public static IRetryDecoratorBuilder <TMessageType> OnFail <TMessageType>(this IRetryDecoratorBuilder <TMessageType> builder, Func <bool> handlerFailedFunc)
        {
            if (handlerFailedFunc == null)
            {
                throw new ArgumentNullException(nameof(handlerFailedFunc));
            }

            return(builder.OnFail(attempt => TaskHelper.FromResult(handlerFailedFunc())));
        }
Beispiel #2
0
        /// <summary>
        ///     Sets the method called when a message handler fails (throws an exception)
        /// </summary>
        /// <typeparam name="TMessageType">The message type</typeparam>
        /// <param name="builder">The retry builder</param>
        /// <param name="handlerFailedFunc">The method to call when the message handler fails</param>
        /// <returns>A retry builder</returns>
        public static IRetryDecoratorBuilder <TMessageType> OnFail <TMessageType>(this IRetryDecoratorBuilder <TMessageType> builder, Action handlerFailedFunc)
        {
            if (handlerFailedFunc == null)
            {
                throw new ArgumentNullException(nameof(handlerFailedFunc));
            }

            return(builder.OnFail(
                       attempt =>
            {
                handlerFailedFunc();
                return TaskHelper.TrueTask;
            }));
        }
Beispiel #3
0
 /// <summary>
 ///     Configures a retry handler
 /// </summary>
 /// <typeparam name="TMessageType">The message type</typeparam>
 /// <param name="builder">The retry builder</param>
 /// <param name="retryHandler">The retry handler</param>
 /// <returns>A retry builder</returns>
 public static IRetryDecoratorBuilder <TMessageType> RetryHandler <TMessageType>(
     this IRetryDecoratorBuilder <TMessageType> builder,
     IMessageHandlerRetry <TMessageType> retryHandler)
 {
     return(builder.OnFail(retryHandler.HandleRetryAsync).OnSuccess(retryHandler.MessageHandledSuccessfullyAsync));
 }