RetryEventHandlerExecutor.cs 671 B

1234567891011121314151617181920
  1. // 大名科技(天津)有限公司版权所有 电话:18020030720 QQ:515096995
  2. //
  3. // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证
  4. namespace Admin.NET.Core;
  5. /// <summary>
  6. /// 事件执行器-超时控制、失败重试熔断等等
  7. /// </summary>
  8. public class RetryEventHandlerExecutor : IEventHandlerExecutor
  9. {
  10. public async Task ExecuteAsync(EventHandlerExecutingContext context, Func<EventHandlerExecutingContext, Task> handler)
  11. {
  12. // 如果执行失败,每隔 1s 重试,最多三次
  13. await Retry.InvokeAsync(async () =>
  14. {
  15. await handler(context);
  16. }, 3, 1000);
  17. }
  18. }