feat:添加任务调度基础功能

This commit is contained in:
橙子
2023-04-22 19:13:29 +08:00
parent 17fb60c481
commit 4b6241e0b0
2 changed files with 84 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yi.Furion.Application.Rbac.Services
{
public interface ITaskService
{
}
}

View File

@@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Furion.Schedule;
using Furion.TimeCrontab;
using Yi.Framework.Infrastructure.Ddd.Services;
namespace Yi.Furion.Application.Rbac.Services.Impl
{
public class TaskService : ApplicationService, ITaskService, IDynamicApiController, ITransient
{
private readonly ISchedulerFactory _schedulerFactory;
public TaskService(ISchedulerFactory schedulerFactory)
{
_schedulerFactory = schedulerFactory;
}
public object GetById(string jobId)
{
var result = _schedulerFactory.TryGetJob(jobId, out var scheduler);
return scheduler.GetModel();
}
public object Get()
{
return _schedulerFactory.GetJobsOfModels();
}
public object Create()
{
//jobBuilder
var jobBuilder = JobBuilder.Create("YourProject", "YourProject.MyJob");
//triggerBuilder
//毫秒
var triggerBuilder = Triggers.Period(5000);
//cron
var triggerBuilder2 = Triggers.Cron("* * * * *", CronStringFormat.Default);
//作业计划,单个jobBuilder与多个triggerBuilder组合
var schedulerBuilder = SchedulerBuilder.Create(jobBuilder, triggerBuilder, triggerBuilder2);
//调度中心工厂使用作业计划管理job,返回调度中心单个
var result = _schedulerFactory.TryAddJob(schedulerBuilder, out var scheduler);
return result;
}
public object Remove(string jobId)
{
var res = _schedulerFactory.TryRemoveJob(jobId, out var scheduler);
return res;
}
public object Update()
{
//jobBuilder
var jobBuilder = JobBuilder.Create("YourProject", "YourProject.MyJob");
//triggerBuilder
//毫秒
var triggerBuilder = Triggers.Period(5000);
//cron
var triggerBuilder2 = Triggers.Cron("* * * * *", CronStringFormat.Default);
//作业计划,单个jobBuilder与多个triggerBuilder组合
var schedulerBuilder = SchedulerBuilder.Create(jobBuilder, triggerBuilder, triggerBuilder2);
var result = _schedulerFactory.TryUpdateJob(schedulerBuilder, out var scheduler);
return result;
}
}
}