Hangfire автоматически запускает все повторяющиеся задания после развертывания Prod - PullRequest
0 голосов
/ 30 апреля 2020

Я столкнулся с серьезной проблемой с Hangfire на производстве, которая случается время от времени, но это довольно актуально.

Я использую Hangfire с. Net Core 2.1

После развертывания моей работы Hangfire все мои повторяющиеся задания запускаются автоматически, а это не то, чего я ожидал. Кто-нибудь еще заметил это?

Я не могу решить эту проблему, Пожалуйста, помогите Спасибо заранее.

1 Ответ

0 голосов
/ 30 апреля 2020

По моему опыту, это обычно потому, что задания ранее не выполнялись, поэтому Hangfire автоматически повторяет их, когда у него появляется такая возможность. (Вы можете проверить, так ли это, просмотрев в своей базе данных задания в состоянии Failed.)

Существуют способы изменить это поведение, если необходимо:

Если если вы не хотите, чтобы задание повторялось, поместите явный атрибут со значением 0 максимум попыток повторения:

[AutomaticRetry(Attempts = 0)]
public void BackgroundMethod()
{
}

Используйте тот же способ, чтобы ограничить число попыток другим значением. Если вы хотите изменить глобальное значение по умолчанию, добавьте новый глобальный фильтр:

GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 5 });

Если вы используете ASP. NET Core, вы можете использовать метод расширения IServiceCollection AddHangfire. Обратите внимание, что AddHangfire использует экземпляр GlobalJobFilter и, следовательно, зависимости должны быть Transient или Singleton.

services.AddHangfire((provider, configuration) =>
{
   configuration.UseFilter(provider.GetRequiredService<AutomaticRetryAttribute>());
}

Ссылка: Работа с исключениями

...