Подтвердить что ты не робот

Как удалить все временные задания hangfire при запуске?

Я рассматриваю использование Hangfire как планировщика заданий для повторяющихся заданий. Так что их настройка проста с помощью AddOrUpdate, но как я могу ее удалить? Я не хочу загрязнять свой код с помощью RecurringJob.RemoveIfExists(), когда это задание было удалено, а затем нужно запомнить его позже.

Есть ли способ получить список всех повторяющихся заданий и удалить их при запуске сервера, и поэтому мой код будет добавлять их каждый раз? Если нет, если есть лучший способ?

например.

Версия приложения 1: добавлена ​​новая повторяющаяся работа Hangfire Do something 1

Версия приложения 2: Добавлены новые повторяющиеся задания Hangfire Do something 2 и Do Something 3

Версия приложения 3: Устранено повторное задание Hangfire Do something 2

Проблема: задание будет по-прежнему существовать на сервере с ошибкой "Невозможно загрузить тип..." и его необходимо удалить.

4b9b3361

Ответ 1

Немного поздно, но, надеюсь, это поможет кому-то другому. Я застрял в той же ситуации. В итоге ответ на повторяющиеся данные задачи HangFire помог мне.

Я использую JobStorage для циклического повторения всех повторяющихся заданий и поочередно удаляю их:

using (var connection = JobStorage.Current.GetConnection())
{
    foreach (var recurringJob in connection.GetRecurringJobs())
    {
        RecurringJob.RemoveIfExists(recurringJob.Id);
    }
}

Я уверен, что есть лучший выход, но я не мог найти его

Ответ 2

Пол был полезным, но API API, похоже, изменился. Используя Hangfire 1.6.20 мне нужно было получать повторяющиеся задания из StorageConnectionExtensions

using (var connection = JobStorage.Current.GetConnection()) 
{
    foreach (var recurringJob in StorageConnectionExtensions.GetRecurringJobs(connection)) 
    {
        RecurringJob.RemoveIfExists(recurringJob.Id);
    }
}

Ответ 3

Вы можете использовать этот код:

var recurringJobs = Hangfire.JobStorage.Current.GetConnection().GetRecurringJobs();

            foreach (var item in recurringJobs)
            {
                RecurringJob.RemoveIfExists(item.Id);
            }

Ответ 4

И есть ли способ удалить запланированные задачи, просто так?