diff --git a/EnvelopeGenerator.Finalizer/Models/WorkerOptions.cs b/EnvelopeGenerator.Finalizer/Models/WorkerOptions.cs deleted file mode 100644 index 42e1aa9c..00000000 --- a/EnvelopeGenerator.Finalizer/Models/WorkerOptions.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace EnvelopeGenerator.Finalizer.Models; - -public class WorkerOptions -{ - private double _intervalInMin = 1.0; - - public double IntervalInMin { - get => _intervalInMin; - set - { - _intervalInMin = value; - IntervalInMillisecond = Min2Millisecond(value); - } - } - - public int IntervalInMillisecond { get; private set; } = Min2Millisecond(1.0); - - private static int Min2Millisecond(double min) => Convert.ToInt32(Math.Round(min * 60 * 1000)); -} \ No newline at end of file diff --git a/EnvelopeGenerator.Finalizer/Program.cs b/EnvelopeGenerator.Finalizer/Program.cs index a14c1bf8..6f25be9c 100644 --- a/EnvelopeGenerator.Finalizer/Program.cs +++ b/EnvelopeGenerator.Finalizer/Program.cs @@ -42,18 +42,23 @@ try var jobKey = new JobKey(name); q.AddJob(opts => opts.WithIdentity(jobKey)); + var expression = config[nameof(Worker) + ":CronExpression"]; + if (string.IsNullOrWhiteSpace(expression)) + throw new InvalidOperationException( + "Cron expression for the Worker job is not configured. " + + "Please provide a valid cron schedule in the configuration under " + + $"'{nameof(Worker)}:CronExpression'."); + q.AddTrigger(opts => opts .ForJob(jobKey) .WithIdentity(name + "-trigger") - .WithCronSchedule("* * * * * ?")); + .WithCronSchedule(expression)); }); builder.Services.AddQuartzHostedService(opt => { opt.WaitForJobsToComplete = true; }); - - builder.Services.Configure(config.GetSection("Worker")); #endregion #region Add DB Context, EG Inf. and Services diff --git a/EnvelopeGenerator.Finalizer/Worker.cs b/EnvelopeGenerator.Finalizer/Worker.cs index 70a521ce..a2b7c8dc 100644 --- a/EnvelopeGenerator.Finalizer/Worker.cs +++ b/EnvelopeGenerator.Finalizer/Worker.cs @@ -8,21 +8,19 @@ namespace EnvelopeGenerator.Finalizer { private readonly ILogger _logger; - private readonly WorkerOptions _options; - - public Worker(ILogger logger, IOptions workerOptions) + public Worker(ILogger logger) { _logger = logger; - _options = workerOptions.Value; } - public async Task Execute(IJobExecutionContext context) + public Task Execute(IJobExecutionContext context) { if (_logger.IsEnabled(LogLevel.Information)) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); } - await Task.Delay(_options.IntervalInMillisecond, context.CancellationToken); + + return Task.CompletedTask; } } } \ No newline at end of file diff --git a/EnvelopeGenerator.Finalizer/appsettings.Worker.json b/EnvelopeGenerator.Finalizer/appsettings.Worker.json index 482bfe9a..0164fd6d 100644 --- a/EnvelopeGenerator.Finalizer/appsettings.Worker.json +++ b/EnvelopeGenerator.Finalizer/appsettings.Worker.json @@ -1,5 +1,5 @@ { "Worker": { - "IntervalInMin": 0.01666666666 + "CronExpression": "* * * * * ?" } } \ No newline at end of file