| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- using Database.Database;
- using Esim.SendMail.Services;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Logging;
- namespace Esim.SendMail;
- public class Program
- {
- public static async Task Main(string[] args)
- {
- var builder = Host.CreateApplicationBuilder(args);
- // Add configuration
- builder.Configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
- // Configure logging
- builder.Logging.ClearProviders();
- builder.Logging.AddConsole();
- builder.Logging.SetMinimumLevel(LogLevel.Information);
- // Add DbContext
- var connectionString = builder.Configuration["Connection"];
- builder.Services.AddDbContext<ModelContext>(options =>
- options.UseOracle(connectionString), ServiceLifetime.Transient);
- // Add Email Service as singleton for connection pooling
- builder.Services.AddSingleton<IEmailService, HighPerformanceEmailService>();
- // Add the background worker service
- builder.Services.AddHostedService<MessageQueueWorker>();
- var host = builder.Build();
- // Log startup info
- var logger = host.Services.GetRequiredService<ILogger<Program>>();
- var jobInterval = builder.Configuration["Job:IntervalSeconds"] ?? "10";
-
- logger.LogInformation("===========================================");
- logger.LogInformation("Esim.SendMail Service Starting...");
- logger.LogInformation("===========================================");
- logger.LogInformation("Job interval: {IntervalSeconds} seconds", jobInterval);
- logger.LogInformation("Service started successfully. Press Ctrl+C to stop.");
- await host.RunAsync();
- }
- }
|