protected override async Task <bool> ShouldRetryAsync(EventExecutionErrorContext context) { var messageId = context.GetProperty <Guid>(nameof(LocalEventMessage.MessageId)); context.SetProperty(RetryAttemptKey, RetryTracking.GetOrDefault(messageId)); if (await base.ShouldRetryAsync(context)) { return(true); } RetryTracking.Remove(messageId); return(false); }
protected override async Task RetryAsync(EventExecutionErrorContext context) { if (Options.RetryStrategyOptions.IntervalMillisecond > 0) { await Task.Delay(Options.RetryStrategyOptions.IntervalMillisecond); } var messageId = context.GetProperty <Guid>(nameof(LocalEventMessage.MessageId)); context.TryGetRetryAttempt(out var retryAttempt); RetryTracking[messageId] = ++retryAttempt; await context.EventBus.As <LocalEventBus>().PublishAsync(new LocalEventMessage(messageId, context.EventData, context.EventType)); RetryTracking.Remove(messageId); }
protected override async Task RetryAsync(EventExecutionErrorContext context) { if (Options.RetryStrategyOptions.IntervalMillisecond > 0) { await Task.Delay(Options.RetryStrategyOptions.IntervalMillisecond); } context.TryGetRetryAttempt(out var retryAttempt); await context.EventBus.As <RabbitEventBus>().PublishAsync( context.EventType, context.EventData, context.GetProperty(HeadersKey).As <MessageProperties>(), new Dictionary <string, object> { { RetryAttemptKey, ++retryAttempt }, { "exceptions", context.Exceptions.Select(x => x.ToString()).ToList() } }); }