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