diff --git a/MyApp.ServiceInterface/BackgroundMqServices.cs b/MyApp.ServiceInterface/BackgroundMqServices.cs index e554050..c3f4777 100644 --- a/MyApp.ServiceInterface/BackgroundMqServices.cs +++ b/MyApp.ServiceInterface/BackgroundMqServices.cs @@ -114,11 +114,22 @@ public async Task Any(DbWrites request) if (request.FailJob != null) { - await Db.UpdateOnlyAsync(() => new PostJob { - CompletedDate = DateTime.UtcNow, + await Db.UpdateAddAsync(() => new PostJob { Error = request.FailJob.Error, + RetryCount = 1, }, x => x.PostId == request.FailJob.Id); + var postJob = await Db.SingleByIdAsync(request.FailJob.Id); + if (postJob.RetryCount > 3) + { + await Db.UpdateOnlyAsync(() => + new PostJob { CompletedDate = DateTime.UtcNow }, + x => x.PostId == request.FailJob.Id); + } + else + { + modelWorkers.Enqueue(postJob); + } } if (request.AnswerAddedToPost != null) diff --git a/MyApp.ServiceModel/Posts.cs b/MyApp.ServiceModel/Posts.cs index 6dfc058..efa1911 100644 --- a/MyApp.ServiceModel/Posts.cs +++ b/MyApp.ServiceModel/Posts.cs @@ -71,6 +71,7 @@ public class PostJob public string? WorkerIp { get; set; } public DateTime? CompletedDate { get; set; } public string? Error { get; set; } + public int RetryCount { get; set; } } public class CheckPostJobs : IGet, IReturn