Add job state check and improve Worker options handling
Refactored Worker to inject JobStateManager and use the full WorkerOptions object. Now, FinalizeDocumentJob only runs if its state is State.Running. Delay is also read from options, improving configuration and control over job execution.
This commit is contained in:
@@ -6,13 +6,15 @@ namespace EnvelopeGenerator.ServiceHost;
|
||||
public class Worker : BackgroundService
|
||||
{
|
||||
private readonly ILogger<Worker> _logger;
|
||||
private readonly int _delayMilliseconds;
|
||||
private readonly WorkerOptions _options;
|
||||
private readonly JobStateManager _jobStateManager;
|
||||
private readonly IServiceScopeFactory _scopeFactory;
|
||||
|
||||
public Worker(ILogger<Worker> logger, IOptions<WorkerOptions> options, IServiceScopeFactory scopeFactory)
|
||||
public Worker(ILogger<Worker> logger, IOptions<WorkerOptions> options, JobStateManager jobStateManager, IServiceScopeFactory scopeFactory)
|
||||
{
|
||||
_logger = logger;
|
||||
_delayMilliseconds = options.Value.DelayMilliseconds;
|
||||
_options = options.Value;
|
||||
_jobStateManager = jobStateManager;
|
||||
_scopeFactory = scopeFactory;
|
||||
}
|
||||
|
||||
@@ -25,11 +27,14 @@ public class Worker : BackgroundService
|
||||
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
|
||||
}
|
||||
|
||||
using var scope = _scopeFactory.CreateScope();
|
||||
var finalizeDocumentJob = scope.ServiceProvider.GetRequiredService<FinalizeDocumentJob>();
|
||||
await finalizeDocumentJob.ExecuteAsync(stoppingToken);
|
||||
if (_jobStateManager.GetState<FinalizeDocumentJob>() == State.Running)
|
||||
{
|
||||
using var scope = _scopeFactory.CreateScope();
|
||||
var finalizeDocumentJob = scope.ServiceProvider.GetRequiredService<FinalizeDocumentJob>();
|
||||
await finalizeDocumentJob.ExecuteAsync(stoppingToken);
|
||||
}
|
||||
|
||||
await Task.Delay(_delayMilliseconds, stoppingToken);
|
||||
await Task.Delay(_options.DelayMilliseconds, stoppingToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user