feat(新增): 将jobDetail放在触发器中

This commit is contained in:
bunny 2024-08-15 16:23:34 +08:00
parent aad873a49a
commit d66882cb0e
3 changed files with 54 additions and 3 deletions

View File

@ -6,4 +6,9 @@ public interface IJobService
/// 开启一个简单的工作
/// </summary>
void StartSimpleJob();
/// <summary>
/// 将jobDetail放在触发器中
/// </summary>
void PutJobDetail4Trigger();
}

View File

@ -26,7 +26,7 @@ public class JobService : IJobService
.WithIdentity("testTrigger", "测试发出器")
.StartNow()
// 每隔5秒执行一次一共重复10次
.WithSimpleSchedule(x => x.WithIntervalInSeconds(5).WithRepeatCount(10))
.WithSimpleSchedule(x => x.WithIntervalInSeconds(1).WithRepeatCount(10))
.Build();
// 使用同步方法
@ -37,4 +37,39 @@ public class JobService : IJobService
// await _scheduler.ScheduleJob(jobDetail, trigger);
// await _scheduler.Start();
}
/// <summary>
/// 将jobDetail放在触发器中
/// </summary>
public void PutJobDetail4Trigger()
{
var stdSchedulerFactory = new StdSchedulerFactory();
var scheduler = stdSchedulerFactory.GetScheduler().GetAwaiter().GetResult();
var jobDetail = JobBuilder.Create<SimJob>()
.UsingJobData("username", "用户名")
.UsingJobData("password", "密码")
// TODO 如果不设置持久的会报错;
// TODO Jobs added with no trigger must be durable.Quartz.SchedulerException: Jobs added with no trigger must be durable.
.StoreDurably() // 设置作业为持久的
.WithIdentity("simpleJob", "简单的JOB")
.Build();
// 将作业添加到工作中
scheduler.AddJob(jobDetail, true).GetAwaiter().GetResult();
var trigger = TriggerBuilder.Create()
.ForJob(jobDetail)
.UsingJobData("trigger", "trigger值")
.WithIdentity("testTrigger", "测试发出器")
.StartNow()
// TODO 设置调度时间单位
// .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).WithRepeatCount(10))
// TODO 自定义调度时间单位
.WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromMinutes(1)).WithRepeatCount(10))
.Build();
scheduler.ScheduleJob(trigger).GetAwaiter().GetResult();
scheduler.Start().GetAwaiter().GetResult();
}
}

View File

@ -11,13 +11,24 @@ namespace Bunny.WebApi.Controllers;
public class JobInitController(IJobService jobService) : ControllerBase
{
/// <summary>
/// 开启一个简单的工作
/// 1. 开启一个简单的工作
/// </summary>
/// <returns></returns>
[HttpPost]
public Result<string> StartSimpleJob()
{
jobService.StartSimpleJob();
return Result<string>.Success();
return Result<string>.Success("将名称生成放在jobDetail中可以再运行时获取到");
}
/// <summary>
/// 2. 将jobDetail放在触发器中
/// </summary>
/// <returns></returns>
[HttpPost]
public Result<string> PutJobDetail4Trigger()
{
jobService.PutJobDetail4Trigger();
return Result<string>.Success("将jobDetail中的一些信息放在触发器中简化写法");
}
}