Я хотел бы использовать Hangfire для создания долгого огня и забыть задачу. Если веб-сервер умирает, а фоновое задание повторяется, я бы хотел, чтобы он продолжал с того места, где он остановился.
В приведенном ниже примере предположим, что foo.RetryCount
достигает 3 -> сервер перезапускается -> Hangfire перезапускает работу В этом случае я бы хотел выполнить задачу еще 7 раз (на основе MaxAttemps
), вместо перезапуска с нуля.
Я думал, что Hangfire сохранил аргументы, переданные методу в их текущем состоянии, но насколько я могу судить, они сброшены.
var foo = new Foo { RetryCount = 0, MaxAttemps = 10 };
BackgroundJob.Enqueue(() => RequestAndRetryOnFailure(foo));
void RequestAndRetryOnFailure(Foo foo)
{
// make request to server, if fail, wait for a
// while and try again later if not foo.MaxAttemps is reached
foo.RetryCount++;
}