QuertZ入门
QuertZ保留执行结果,留待下次调用
QuertZ等待耗时任务执行完成
部分任务耗时比较久,如果每次任务执行时间间隔设置较短,则任务会被覆盖,执行结果错误。为此QuertZ提供特性DisallowConcurrentExecution,实现此功能,具体如下:
//对于耗时任务,需要上一次执行完成后,才执行下次任务,覆盖之前设置的执行周期
[DisallowConcurrentExecution]
public class SendMessageJob : IJob
{
/// <summary>
/// 当前Task内部就是作业执行的任务
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public async Task Execute(IJobExecutionContext context)
{
Thread.Sleep(5000);//此处模拟耗时操作
await Task.Run(() =>
{
Console.WriteLine("*****************************");
Console.WriteLine($"QuertZ测试,{DateTime.Now}");
Console.WriteLine("*****************************");
});
}
}
之前设置的任务执行时间间隔:
ITrigger trigger = TriggerBuilder.Create() .WithIdentity("sendMessageTrigger", "group1")
.StartNow()
//WithIntervalInSeconds 多久执行一次
//WithRepeatCount 一共执行几次
.WithSimpleSchedule(w => w.WithIntervalInSeconds(3).WithRepeatCount(5))
.Build();
任务执行本身需要5s,任务设置间隔为3s,执行结果如下:
谢谢打赏