diff --git a/src/DotXxlJob.Core/Queue/JobTaskQueue.cs b/src/DotXxlJob.Core/Queue/JobTaskQueue.cs index adf62a3..85347a3 100644 --- a/src/DotXxlJob.Core/Queue/JobTaskQueue.cs +++ b/src/DotXxlJob.Core/Queue/JobTaskQueue.cs @@ -128,7 +128,20 @@ namespace DotXxlJob.Core _jobLogger.Log("
----------- xxl-job job execute start -----------
----------- Param:{0}", triggerParam.ExecutorParams); - result = await Executor.Execute(triggerParam, ct); + var exectorToken = ct; + CancellationTokenSource timeoutCts = null; + if (triggerParam.ExecutorTimeout > 0) + { + timeoutCts = new CancellationTokenSource(triggerParam.ExecutorTimeout * 1000); + exectorToken = CancellationTokenSource.CreateLinkedTokenSource(exectorToken, timeoutCts.Token).Token; + } + result = await Executor.Execute(triggerParam, exectorToken); + if(timeoutCts != null && timeoutCts.IsCancellationRequested) + { + result = ReturnT.FAIL_TIMEOUT; + timeoutCts.Dispose(); + timeoutCts = null; + } _jobLogger.Log("
----------- xxl-job job execute end(finish) -----------
----------- ReturnT:" + result.Code); }