Я использовал повторяющееся задание Hangfire для выполнения моего длительного процесса с выражением cron каждую минуту (так что в основном он запускается каждую минуту для получения данных в базе данных и выполнения некоторой обработки), и я использовал повторную попытку реализации Hangfire из 3, когда он терпит неудачу.
Вопросов :
- Как повторная попытка работает в Hangfire? Выполняется ли повторяющееся задание каждую минуту, и повторная попытка будет выполняться параллельно?
- и как я узнаю, что повторная попытка 3 уже выполнена или уже достигнута (в коде)?
Причина, по которой я хочу знать, достигнута ли уже повторная попытка, потому что мне нужно что-то сделать с моими данными в моей базе данных, обрабатываемыми повторяющимся заданием Hangfire.
Примечание. Просмотр панели управления для определения повторной попытки - это не мой вариант, а с помощью кода. Является ли это возможным?
Реализация :
public class HangfireImpl
{
public static void ConfigureHangfire(IAppBuilder app, string dashBoardName, string connectionString)
{
GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 3 });
GlobalConfiguration.Configuration
.UseSqlServerStorage(connectionString)
.UseDashboardMetric(SqlServerStorage.ActiveConnections)
.UseDashboardMetric(SqlServerStorage.TotalConnections)
.UseDashboardMetric(DashboardMetrics.FailedCount);
app.UseHangfireDashboard(string.Format(@"/{0}", dashBoardName));
app.UseHangfireServer();
}
public static void InitializeJobs()
{
// is there a way to find out how many retry occured inside my service.Execute?
RecurringJob.AddOrUpdate<Worker>(service => service.Execute(), Cron.Minutely);
}
}