Запуск повторяющегося задания Hangfire из сценария базы данных

#hangfire #hangfire-sql #hangfire-console

#hangfire #hangfire-sql #hangfire-консоль

Вопрос:

У меня есть довольно сложный sql-скрипт, который очищает мою базу данных и будет время от времени запускаться вручную. Сразу после запуска скрипта я должен запустить повторяющееся задание hangfire, которое обычно выполняется только один раз в день.

Чтобы не забыть запустить скрипт, я хотел бы запустить выполнение непосредственно из скрипта sql. Есть ли простой способ изменить одну из таблиц hangfire для выполнения этой задачи?

Версия ядра Hangfire 1.7.5

ОБНОВЛЕНИЕ: К сожалению, я не нашел ни одной таблицы hangfire, содержащей повторяющиеся задания. Поэтому я предполагаю, что они вообще не сохраняются. Можно ли запустить задание, просто вставив новую строку в HangFire.Таблица заданий? Или это плохая идея?

Комментарии:

1. Я также хотел бы запустить задание из базы данных. Итак, поскольку я не нашел решения.

Ответ №1:

Извините, что не ответил на этот вопрос здесь, в stackoverflow. Из-за отсутствия чистого решения hangfire я, наконец, реализовал некоторую пользовательскую логику с помощью отдельной таблицы «DatabaseState».

В моей таблице DatabaseState есть следующие поля: DateOfDbUpdate(datetime) и HangfireExecuted(bool). Всякий раз, когда я запускаю свой сложный SQL-скрипт, я просто вставляю новую запись в таблицу с текущим временем и HangfireExecuted = false .

В коде я создал повторяющееся задание hangfire, которое каждые несколько секунд проверяет, есть ли новая запись в таблице DatabaseState с HangfireExecuted == false . Если он найдет такую запись, он запустит задание очистки.

К сожалению, это не очень чистое и прямое решение. Я был бы рад, если кто-то другой предложит реальное решение hangfire.