diff --git a/src/DigitalData.EmailProfiler.API/Configurations/EmailSenderWorkerConfiguration.cs b/src/DigitalData.EmailProfiler.API/Configurations/EmailSenderWorkerConfiguration.cs
new file mode 100644
index 0000000..3aefedf
--- /dev/null
+++ b/src/DigitalData.EmailProfiler.API/Configurations/EmailSenderWorkerConfiguration.cs
@@ -0,0 +1,11 @@
+namespace DigitalData.EmailProfiler.API.Configurations;
+
+///
+/// Configuration for EmailSenderWorker
+///
+public class EmailSenderWorkerConfiguration
+{
+ public const string SectionName = "Workers:EmailSender";
+
+ public bool Enabled { get; set; } = true;
+}
\ No newline at end of file
diff --git a/src/DigitalData.EmailProfiler.API/Program.cs b/src/DigitalData.EmailProfiler.API/Program.cs
index 6bbf8cf..7c32478 100644
--- a/src/DigitalData.EmailProfiler.API/Program.cs
+++ b/src/DigitalData.EmailProfiler.API/Program.cs
@@ -1,4 +1,4 @@
-using DigitalData.EmailProfiler.API;
+using DigitalData.EmailProfiler.API.Configurations;
using DigitalData.EmailProfiler.API.Middleware;
using DigitalData.EmailProfiler.API.Workers;
using DigitalData.EmailProfiler.Application;
@@ -44,8 +44,7 @@ try
builder.Services.AddInfrastructure(builder.Configuration);
// Register EmailSenderWorker configuration
- builder.Services.Configure(
- builder.Configuration.GetSection(EmailSenderWorkerConfiguration.SectionName));
+ builder.Services.Configure(builder.Configuration.GetSection(EmailSenderWorkerConfiguration.SectionName));
// Register EmailAccount configuration (IOptions)
builder.Services.Configure(
diff --git a/src/DigitalData.EmailProfiler.API/Workers/EmailSenderWorker.cs b/src/DigitalData.EmailProfiler.API/Workers/EmailSenderWorker.cs
index cc7dc27..289cbc0 100644
--- a/src/DigitalData.EmailProfiler.API/Workers/EmailSenderWorker.cs
+++ b/src/DigitalData.EmailProfiler.API/Workers/EmailSenderWorker.cs
@@ -1,6 +1,8 @@
+using DigitalData.EmailProfiler.API.Configurations;
using DigitalData.EmailProfiler.Application.Common.Events;
using DigitalData.EmailProfiler.Application.Common.Interfaces;
using DigitalData.EmailProfiler.Application.EmailSending.Commands;
+using Microsoft.Extensions.Options;
namespace DigitalData.EmailProfiler.API.Workers;
@@ -13,11 +15,9 @@ public class EmailSenderWorker(
IEmailQueue EmailQueue,
IEmailService EmailService,
ILogger Logger,
- IConfiguration configuration) : BackgroundService
+ IOptions configuration) : BackgroundService
{
- private readonly EmailSenderWorkerConfiguration _config =
- configuration.GetSection(EmailSenderWorkerConfiguration.SectionName)
- .Get() ?? new EmailSenderWorkerConfiguration();
+ private readonly EmailSenderWorkerConfiguration _config = configuration.Value;
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
@@ -80,20 +80,4 @@ public class EmailSenderWorker(
throw;
}
}
-}
-
-///
-/// Configuration for EmailSenderWorker
-///
-public class EmailSenderWorkerConfiguration
-{
- public const string SectionName = "Workers:EmailSender";
-
- public bool Enabled { get; set; } = true;
-
- ///
- /// Maximum retry attempts before moving to Dead Letter Queue
- /// NOTE: Currently NOT used - all failed emails move directly to DLQ without retry
- ///
- public int MaxRetryCount { get; set; } = 3;
-}
+}
\ No newline at end of file
diff --git a/src/DigitalData.EmailProfiler.API/appsettings.json b/src/DigitalData.EmailProfiler.API/appsettings.json
index 8f9d3bf..8a90591 100644
--- a/src/DigitalData.EmailProfiler.API/appsettings.json
+++ b/src/DigitalData.EmailProfiler.API/appsettings.json
@@ -13,8 +13,7 @@
"AllowedHosts": "*",
"Workers": {
"EmailSender": {
- "Enabled": true,
- "MaxRetryCount": 3
+ "Enabled": true
}
},
"LuckyPennySoftLicenseKey": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ikx1Y2t5UGVubnlTb2Z0d2FyZUxpY2Vuc2VLZXkvYmJiMTNhY2I1OTkwNGQ4OWI0Y2IxYzg1ZjA4OGNjZjkiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x1Y2t5cGVubnlzb2Z0d2FyZS5jb20iLCJhdWQiOiJMdWNreVBlbm55U29mdHdhcmUiLCJleHAiOiIxODE2MTI4MDAwIiwiaWF0IjoiMTc4NDYyNDU1NyIsImFjY291bnRfaWQiOiIwMTk4M2M1OWU0YjM3MjhlYmZkMzEwM2MyYTQ4NmU4NSIsImN1c3RvbWVyX2lkIjoiMDE5ODNjNTllNGIzNzI4ZWJmZDMxMDNjMmE0ODZlODUiLCJzdWJfaWQiOiItIiwiZWRpdGlvbiI6IjAiLCJ0eXBlIjoiMiJ9.IUUO926m9crYGYxMjjKD_n9BnUm-EDyjFIn0YmMUCo7C-QTwvB8WhXP8veTSFsBq-leIIDJ4jyl7Pgc_7ciwg1XhUSIs4mkQroEUaSFCGOxw7Pi41WM8MK5YFSaqLTYYXec9zxgiJbGzABbh3CHTSup3okGnVm_CMoPEs91l2c0A6N1JyZy74urd_tF0KGVKf0MOvzdlQIWLQ8o73S4pTv2N-F6UlzI0fdMtTHMLNNQyr0NdWdnuBk_jMBXO-gy5RE_oCRfMTTYRX2n3XLK6pTfXE0Ct338o9F5sH8Ph2lTXSu56cpdsfZOQZGqCH0LoFp1Dd7RJgIgNmBiTGfvDnA"