diff --git a/build/releasenotes.props b/build/releasenotes.props index b36895d..b3aadb2 100644 --- a/build/releasenotes.props +++ b/build/releasenotes.props @@ -3,6 +3,7 @@ 1. 修改异步方式读取RequestBody 2. 兼容xxl-jobv2.3版本回调函数参数变更的问题 + 3. 修复阻塞处理策略设置为“丢弃后续调度“,只有第一次调度正常执行,后面的所有调度都被丢弃了的问题 diff --git a/build/version.props b/build/version.props index c8130d7..751defc 100644 --- a/build/version.props +++ b/build/version.props @@ -1,5 +1,5 @@ - 2.3.0 + 2.3.1 diff --git a/samples/ASPNetCoreExecutor/DemoJobHandler.cs b/samples/ASPNetCoreExecutor/DemoJobHandler.cs index 70d65a7..1e894a7 100644 --- a/samples/ASPNetCoreExecutor/DemoJobHandler.cs +++ b/samples/ASPNetCoreExecutor/DemoJobHandler.cs @@ -10,11 +10,14 @@ namespace ASPNetCoreExecutor [JobHandler("demoJobHandler")] public class DemoJobHandler:AbstractJobHandler { - public override Task Execute(JobExecuteContext context) - { + public override async Task Execute(JobExecuteContext context) + { context.JobLogger.Log("receive demo job handler,parameter:{0}",context.JobParameter); - - return Task.FromResult(ReturnT.SUCCESS); + context.JobLogger.Log("开始休眠120秒"); + // + await Task.Delay(10 * 1000); + context.JobLogger.Log("休眠120秒结束"); + return ReturnT.SUCCESS; } } } \ No newline at end of file diff --git a/src/DotXxlJob.Core/JobDispatcher.cs b/src/DotXxlJob.Core/JobDispatcher.cs index 00e19bf..35f835d 100644 --- a/src/DotXxlJob.Core/JobDispatcher.cs +++ b/src/DotXxlJob.Core/JobDispatcher.cs @@ -82,7 +82,12 @@ namespace DotXxlJob.Core //丢弃后续的 if (Constants.ExecutorBlockStrategy.DISCARD_LATER == triggerParam.ExecutorBlockStrategy) { - return ReturnT.Failed($"block strategy effect:{triggerParam.ExecutorBlockStrategy}"); + //存在还没执行完成的任务 + if (taskQueue.IsRunning()) + { + return ReturnT.Failed($"block strategy effect:{triggerParam.ExecutorBlockStrategy}"); + } + //否则还是继续做 } //覆盖较早的 if (Constants.ExecutorBlockStrategy.COVER_EARLY == triggerParam.ExecutorBlockStrategy) @@ -109,7 +114,7 @@ namespace DotXxlJob.Core } private void TriggerCallback(object sender, HandleCallbackParam callbackParam) - { + { this._callbackTaskQueue.Push(callbackParam); } diff --git a/src/DotXxlJob.Core/Queue/JobTaskQueue.cs b/src/DotXxlJob.Core/Queue/JobTaskQueue.cs index 6b10135..dfa3d22 100644 --- a/src/DotXxlJob.Core/Queue/JobTaskQueue.cs +++ b/src/DotXxlJob.Core/Queue/JobTaskQueue.cs @@ -27,8 +27,15 @@ namespace DotXxlJob.Core public event EventHandler CallBack; + + + public bool IsRunning() + { + return _cancellationTokenSource !=null; + } + /// /// 覆盖之前的队列