From b5cd42b6fa00f7d8f9b6103a922a494b4f7417e1 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 3 Nov 2025 16:38:41 +0100 Subject: [PATCH] add WorkerOptions. - bind IntervalInMin with worker task delay --- .../Models/WorkerOptions.cs | 19 +++++ EnvelopeGenerator.Finalizer/Program.cs | 3 + EnvelopeGenerator.Finalizer/Worker.cs | 10 ++- .../appsettings.Worker.Database.json | 21 +++++ .../appsettings.Worker.Development.json | 8 ++ .../appsettings.Worker.Logging.json | 81 +++++++++++++++++++ .../appsettings.Worker.PdfBurner.json | 14 ++++ .../appsettings.Worker.json | 5 ++ 8 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 EnvelopeGenerator.Finalizer/Models/WorkerOptions.cs create mode 100644 EnvelopeGenerator.Finalizer/appsettings.Worker.Database.json create mode 100644 EnvelopeGenerator.Finalizer/appsettings.Worker.Development.json create mode 100644 EnvelopeGenerator.Finalizer/appsettings.Worker.Logging.json create mode 100644 EnvelopeGenerator.Finalizer/appsettings.Worker.PdfBurner.json create mode 100644 EnvelopeGenerator.Finalizer/appsettings.Worker.json diff --git a/EnvelopeGenerator.Finalizer/Models/WorkerOptions.cs b/EnvelopeGenerator.Finalizer/Models/WorkerOptions.cs new file mode 100644 index 00000000..42e1aa9c --- /dev/null +++ b/EnvelopeGenerator.Finalizer/Models/WorkerOptions.cs @@ -0,0 +1,19 @@ +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 d52a7665..e98c7e0d 100644 --- a/EnvelopeGenerator.Finalizer/Program.cs +++ b/EnvelopeGenerator.Finalizer/Program.cs @@ -34,7 +34,10 @@ try .ToList() .ForEach(file => config.AddJsonFile(file, true, true)); + #region Worker builder.Services.AddHostedService(); + builder.Services.Configure(config.GetSection("Worker")); + #endregion #region Add DB Context, EG Inf. and Services var cnnStrName = "Default"; diff --git a/EnvelopeGenerator.Finalizer/Worker.cs b/EnvelopeGenerator.Finalizer/Worker.cs index 172339b2..472ed2bf 100644 --- a/EnvelopeGenerator.Finalizer/Worker.cs +++ b/EnvelopeGenerator.Finalizer/Worker.cs @@ -1,12 +1,18 @@ +using EnvelopeGenerator.Finalizer.Models; +using Microsoft.Extensions.Options; + namespace EnvelopeGenerator.Finalizer { public class Worker : BackgroundService { private readonly ILogger _logger; - public Worker(ILogger logger) + private readonly WorkerOptions _options; + + public Worker(ILogger logger, IOptions workerOptions) { _logger = logger; + _options = workerOptions.Value; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) @@ -17,7 +23,7 @@ namespace EnvelopeGenerator.Finalizer { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); } - await Task.Delay(1000, stoppingToken); + await Task.Delay(_options.IntervalInMillisecond, stoppingToken); } } } diff --git a/EnvelopeGenerator.Finalizer/appsettings.Worker.Database.json b/EnvelopeGenerator.Finalizer/appsettings.Worker.Database.json new file mode 100644 index 00000000..4124b453 --- /dev/null +++ b/EnvelopeGenerator.Finalizer/appsettings.Worker.Database.json @@ -0,0 +1,21 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "UseDbMigration": false, + "ConnectionStrings": { + "Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;", + "DbMigrationTest": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;" + }, + "DbTriggerParams": { + "Envelope": [ "TBSIG_ENVELOPE_AFT_INS" ], + "History": [ "TBSIG_ENVELOPE_HISTORY_AFT_INS" ], + "EmailOut": [ "TBEMLP_EMAIL_OUT_AFT_INS", "TBEMLP_EMAIL_OUT_AFT_UPD" ], + "EnvelopeReceiverReadOnly": [ "TBSIG_ENVELOPE_RECEIVER_READ_ONLY_UPD" ], + "Receiver": [], + "EmailTemplate": [ "TBSIG_EMAIL_TEMPLATE_AFT_UPD" ] + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Finalizer/appsettings.Worker.Development.json b/EnvelopeGenerator.Finalizer/appsettings.Worker.Development.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/EnvelopeGenerator.Finalizer/appsettings.Worker.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/EnvelopeGenerator.Finalizer/appsettings.Worker.Logging.json b/EnvelopeGenerator.Finalizer/appsettings.Worker.Logging.json new file mode 100644 index 00000000..2909cf07 --- /dev/null +++ b/EnvelopeGenerator.Finalizer/appsettings.Worker.Logging.json @@ -0,0 +1,81 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], + "MinimumLevel": { + "Default": "Verbose", + "Override": { + "Microsoft": "Warning", + "System": "Warning" + } + }, + "WriteTo": [ + { + "Name": "Console", + "Args": { + "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "E:/LogFiles/Digital Data/signFlow.Finalizer/log.Verbose-.txt", + "rollingInterval": "Day", + "restrictedToMinimumLevel": "Verbose", + "retainedFileCountLimit": 30, + "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "E:/LogFiles/Digital Data/signFlow.Finalizer/log.Debug-.txt", + "rollingInterval": "Day", + "restrictedToMinimumLevel": "Debug", + "retainedFileCountLimit": 30, + "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "E:/LogFiles/Digital Data/signFlow.Finalizer/log.Info-.txt", + "rollingInterval": "Day", + "restrictedToMinimumLevel": "Information", + "retainedFileCountLimit": 30, + "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "E:/LogFiles/Digital Data/signFlow.Finalizer/log.Warning-.txt", + "rollingInterval": "Day", + "restrictedToMinimumLevel": "Warning", + "retainedFileCountLimit": 30, + "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "E:/LogFiles/Digital Data/signFlow.Finalizer/log.Error-.txt", + "rollingInterval": "Day", + "restrictedToMinimumLevel": "Error", + "retainedFileCountLimit": 30, + "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "E:/LogFiles/Digital Data/signFlow.Finalizer/log.Fatal-.txt", + "rollingInterval": "Day", + "restrictedToMinimumLevel": "Fatal", + "retainedFileCountLimit": 30, + "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}" + } + } + ], + "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ] + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Finalizer/appsettings.Worker.PdfBurner.json b/EnvelopeGenerator.Finalizer/appsettings.Worker.PdfBurner.json new file mode 100644 index 00000000..3f0309cb --- /dev/null +++ b/EnvelopeGenerator.Finalizer/appsettings.Worker.PdfBurner.json @@ -0,0 +1,14 @@ +{ + "IgnoredLabels": { + "Label": [ + "Date", + "Datum", + "ZIP", + "PLZ", + "Place", + "Ort", + "Position", + "Stellung" + ] + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Finalizer/appsettings.Worker.json b/EnvelopeGenerator.Finalizer/appsettings.Worker.json new file mode 100644 index 00000000..482bfe9a --- /dev/null +++ b/EnvelopeGenerator.Finalizer/appsettings.Worker.json @@ -0,0 +1,5 @@ +{ + "Worker": { + "IntervalInMin": 0.01666666666 + } +} \ No newline at end of file