diff --git a/Blog.Core.Api/Controllers/TasksQzController.cs b/Blog.Core.Api/Controllers/TasksQzController.cs index 04d63d0..ce87203 100644 --- a/Blog.Core.Api/Controllers/TasksQzController.cs +++ b/Blog.Core.Api/Controllers/TasksQzController.cs @@ -501,6 +501,28 @@ namespace Blog.Core.Controllers var implementTypes = types.Where(x => x.IsClass).Select(item => new QuartzReflectionViewModel { nameSpace = item.Namespace, nameClass = item.Name, remark = "" }).ToList(); return MessageModel>.Success("获取成功", implementTypes); } + + /// + /// 立即执行任务 + /// + /// + /// + [HttpGet] + public async Task> ExecuteJob(string jobId) + { + var data = new MessageModel(); + + var model = await _tasksQzServices.QueryById(jobId); + if (model != null) + { + return await _schedulerCenter.ExecuteJobAsync(model); + } + else + { + data.msg = "任务不存在"; + } + return data; + } } } diff --git a/Blog.Core.Tasks/QuartzNet/ISchedulerCenter.cs b/Blog.Core.Tasks/QuartzNet/ISchedulerCenter.cs index 6319039..c859854 100644 --- a/Blog.Core.Tasks/QuartzNet/ISchedulerCenter.cs +++ b/Blog.Core.Tasks/QuartzNet/ISchedulerCenter.cs @@ -66,6 +66,13 @@ namespace Blog.Core.Tasks /// string GetTriggerState(string key); + /// + /// 立即执行 一个任务 + /// + /// + /// + Task> ExecuteJobAsync(TasksQz tasksQz); + } } diff --git a/Blog.Core.Tasks/QuartzNet/SchedulerCenterServer.cs b/Blog.Core.Tasks/QuartzNet/SchedulerCenterServer.cs index 623f452..93fa001 100644 --- a/Blog.Core.Tasks/QuartzNet/SchedulerCenterServer.cs +++ b/Blog.Core.Tasks/QuartzNet/SchedulerCenterServer.cs @@ -443,5 +443,49 @@ namespace Blog.Core.Tasks } #endregion + + /// + /// 立即执行 一个任务 + /// + /// + /// + public async Task> ExecuteJobAsync(TasksQz tasksQz) + { + var result = new MessageModel(); + try + { + JobKey jobKey = new JobKey(tasksQz.Id, tasksQz.JobGroup); + + //判断任务是否存在,存在则 触发一次,不存在则先添加一个任务,触发以后再 停止任务 + if (!await _scheduler.Result.CheckExists(jobKey)) + { + //不存在 则 添加一个计划任务 + await AddScheduleJobAsync(tasksQz); + + //触发执行一次 + await _scheduler.Result.TriggerJob(jobKey); + + //停止任务 + await StopScheduleJobAsync(tasksQz); + + result.success = true; + result.msg = $"立即执行计划任务:【{tasksQz.Name}】成功"; + } + else + { + await _scheduler.Result.TriggerJob(jobKey); + result.success = true; + result.msg = $"立即执行计划任务:【{tasksQz.Name}】成功"; + } + } + catch (Exception ex) + { + result.msg = $"立即执行计划任务失败:【{ex.Message}】"; + } + + return result; + } + + } }