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;
+ }
+
///
/// 覆盖之前的队列