diff --git a/src/DigitalData.EmailProfiler.API/Configurations/EmailSenderWorkerConfiguration.cs b/src/DigitalData.EmailProfiler.API/Configurations/EmailSenderWorkerConfiguration.cs
deleted file mode 100644
index 3aefedf..0000000
--- a/src/DigitalData.EmailProfiler.API/Configurations/EmailSenderWorkerConfiguration.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-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 7c32478..de7c162 100644
--- a/src/DigitalData.EmailProfiler.API/Program.cs
+++ b/src/DigitalData.EmailProfiler.API/Program.cs
@@ -1,6 +1,4 @@
-using DigitalData.EmailProfiler.API.Configurations;
using DigitalData.EmailProfiler.API.Middleware;
-using DigitalData.EmailProfiler.API.Workers;
using DigitalData.EmailProfiler.Application;
using DigitalData.EmailProfiler.Application.Common.Dtos;
using DigitalData.EmailProfiler.Infrastructure;
@@ -43,16 +41,10 @@ try
// Register Infrastructure layer (RabbitMQ, Repositories, etc.)
builder.Services.AddInfrastructure(builder.Configuration);
- // Register EmailSenderWorker configuration
- builder.Services.Configure(builder.Configuration.GetSection(EmailSenderWorkerConfiguration.SectionName));
-
// Register EmailAccount configuration (IOptions)
builder.Services.Configure(
builder.Configuration.GetSection("EmailAccount"));
- // Register Background Workers
- builder.Services.AddHostedService();
-
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
diff --git a/src/DigitalData.EmailProfiler.Infrastructure/DependencyInjection.cs b/src/DigitalData.EmailProfiler.Infrastructure/DependencyInjection.cs
index e0268f5..fc1b03c 100644
--- a/src/DigitalData.EmailProfiler.Infrastructure/DependencyInjection.cs
+++ b/src/DigitalData.EmailProfiler.Infrastructure/DependencyInjection.cs
@@ -2,6 +2,7 @@ using DigitalData.EmailProfiler.Application.Common.Interfaces;
using DigitalData.EmailProfiler.Infrastructure.Messaging;
using DigitalData.EmailProfiler.Infrastructure.Queue;
using DigitalData.EmailProfiler.Infrastructure.Services;
+using DigitalData.EmailProfiler.Infrastructure.Services.Background;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
@@ -42,6 +43,9 @@ public static class DependencyInjection
.PersistKeysToFileSystem(new DirectoryInfo(@"C:\ProgramData\EmailService\Keys"))
.SetApplicationName("EmailProfiler");
+ // Register Background Workers
+ services.AddHostedService();
+
return services;
}
}
diff --git a/src/DigitalData.EmailProfiler.API/Workers/EmailSenderWorker.cs b/src/DigitalData.EmailProfiler.Infrastructure/Services/Background/AsyncIniteWorker.cs
similarity index 61%
rename from src/DigitalData.EmailProfiler.API/Workers/EmailSenderWorker.cs
rename to src/DigitalData.EmailProfiler.Infrastructure/Services/Background/AsyncIniteWorker.cs
index 5d8bd01..9f145a0 100644
--- a/src/DigitalData.EmailProfiler.API/Workers/EmailSenderWorker.cs
+++ b/src/DigitalData.EmailProfiler.Infrastructure/Services/Background/AsyncIniteWorker.cs
@@ -1,29 +1,20 @@
-using DigitalData.EmailProfiler.API.Configurations;
using DigitalData.EmailProfiler.Application.Common.Interfaces;
-using Microsoft.Extensions.Options;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
-namespace DigitalData.EmailProfiler.API.Workers;
+namespace DigitalData.EmailProfiler.Infrastructure.Services.Background;
///
/// Background worker that processes outgoing emails from RabbitMQ queue.
/// Uses event-driven RabbitMQ consumer (push-based) instead of polling.
/// NO database operations - email account configuration comes from appsettings.
///
-public class EmailSenderWorker(
+public class AsyncIniteWorker(
IOutgoingEmailQueue EmailQueue,
- ILogger Logger,
- IOptions configuration) : BackgroundService
+ ILogger Logger) : BackgroundService
{
- private readonly EmailSenderWorkerConfiguration _config = configuration.Value;
-
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
- if (!_config.Enabled)
- {
- Logger.LogInformation("EmailSenderWorker is disabled in configuration");
- return;
- }
-
Logger.LogInformation("EmailSenderWorker started (event-driven RabbitMQ consumer)");
try
@@ -32,7 +23,7 @@ public class EmailSenderWorker(
await EmailQueue.InitAsync(stoppingToken);
// Keep worker alive until cancellation
- await Task.Delay(Timeout.Infinite, stoppingToken);
+ // await Task.Delay(Timeout.Infinite, stoppingToken);
}
catch (OperationCanceledException)
{
@@ -44,6 +35,6 @@ public class EmailSenderWorker(
throw;
}
- Logger.LogInformation("EmailSenderWorker stopped");
+ // Logger.LogInformation("EmailSenderWorker stopped");
}
}
\ No newline at end of file