diff --git a/src/Hangfire.Core/BackgroundJobServer.cs b/src/Hangfire.Core/BackgroundJobServer.cs index 37fdbef75..897e41ade 100644 --- a/src/Hangfire.Core/BackgroundJobServer.cs +++ b/src/Hangfire.Core/BackgroundJobServer.cs @@ -213,7 +213,14 @@ private IEnumerable GetRequiredProcesses( if (!_options.IsLightweightServer) { - processes.Add(new DelayedJobScheduler(_options.SchedulePollingInterval, stateChanger).UseBackgroundPool(1)); + processes.Add( + new DelayedJobScheduler(_options.SchedulePollingInterval, stateChanger) + { + TaskScheduler = _options.TaskScheduler, + MaxDegreeOfParallelism = _options.MaxDegreeOfParallelismForSchedulers + } + .UseBackgroundPool(1)); + processes.Add( new RecurringJobScheduler(factory, _options.SchedulePollingInterval, timeZoneResolver) { diff --git a/src/Hangfire.Core/Server/DelayedJobScheduler.cs b/src/Hangfire.Core/Server/DelayedJobScheduler.cs index a0805c5e4..2d9145047 100644 --- a/src/Hangfire.Core/Server/DelayedJobScheduler.cs +++ b/src/Hangfire.Core/Server/DelayedJobScheduler.cs @@ -81,6 +81,7 @@ public class DelayedJobScheduler : IBackgroundProcess private readonly IBackgroundJobStateChanger _stateChanger; private readonly IProfiler _profiler; private readonly TimeSpan _pollingDelay; + private bool _parallelismIssueLogged; /// /// Initializes a new instance of the @@ -234,9 +235,10 @@ private int EnqueueNextScheduledJobs(BackgroundProcessContext context) } else { - if (MaxDegreeOfParallelism > 1) + if (MaxDegreeOfParallelism > 1 && !_parallelismIssueLogged) { _logger.Warn("Parallel execution is configured but can't be used, because current storage implementation doesn't support batching."); + _parallelismIssueLogged = true; } for (var i = 0; i < BatchSize; i++) diff --git a/src/Hangfire.Core/Server/RecurringJobScheduler.cs b/src/Hangfire.Core/Server/RecurringJobScheduler.cs index 8a9345b2c..868932290 100644 --- a/src/Hangfire.Core/Server/RecurringJobScheduler.cs +++ b/src/Hangfire.Core/Server/RecurringJobScheduler.cs @@ -78,6 +78,7 @@ public class RecurringJobScheduler : IBackgroundProcess private readonly ITimeZoneResolver _timeZoneResolver; private readonly TimeSpan _pollingDelay; private readonly IProfiler _profiler; + private bool _parallelismIssueLogged; /// /// Initializes a new instance of the @@ -252,9 +253,10 @@ private int EnqueueNextRecurringJobs(BackgroundProcessContext context) } else { - if (MaxDegreeOfParallelism > 1) + if (MaxDegreeOfParallelism > 1 && !_parallelismIssueLogged) { _logger.Warn("Parallel execution is configured but can't be used, because current storage implementation doesn't support batching."); + _parallelismIssueLogged = true; } for (var i = 0; i < BatchSize; i++)