Я работаю с кварцем 3,07 дюйма. NET. Моя цель состоит в том, чтобы удалить сбойные задания или создать какой-либо механизм, который будет выполнять внеплановые / удаленные задания в случае сбоя (или более определенного количества раз c). Когда я создаю задания, они не настроены на долговечность.
Я видел, что есть флаг, который вы добавляете в JobExecutionException, который останавливает работу для запуска. И это работает частично ожидаемый. Он останавливает выполнение запланированного задания, но если я запрашиваю все запланированные задания в планировщике, я получаю и задание, и триггер. Они будут удалены после того, как я убью планировщик и запустлю его снова. Вот пример кода:
public async Task Execute(IJobExecutionContext context)
{
JobDataMap dataMap = context.JobDetail.JobDataMap;
try
{
_logger.LogInfo($"Started Job, JobId: {jobId}, Endpoint: {endpoint}");
await clinet.DoWork(endpoint);
}
catch (Exception exception)
{
_logger.LogException(exception);
//Unschedule job if fails to execute.
if (_settings.UnscheduleJobOnFailure)
{
throw new JobExecutionException() { UnscheduleAllTriggers = true };
}
throw;
}
}
Я не нашел документации по этому конкретному c поведению. Буду признателен за любой ответ, даже если мой способ обработки этого не является архитектурно правильным.