using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using StellaOps.Notify.Queue; using StellaOps.Notify.Worker; using StellaOps.Notify.Worker.Handlers; using StellaOps.Notify.Worker.Processing; using StellaOps.Worker.Health; var builder = WebApplication.CreateSlimBuilder(args); builder.Configuration .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables(prefix: "NOTIFY_"); builder.Logging.ClearProviders(); builder.Logging.AddSimpleConsole(options => { options.TimestampFormat = "yyyy-MM-ddTHH:mm:ss.fffZ "; options.UseUtcTimestamp = true; }); builder.Services.Configure(builder.Configuration.GetSection("notify:worker")); builder.Services.AddSingleton(TimeProvider.System); builder.Services.AddNotifyEventQueue(builder.Configuration, "notify:queue"); builder.Services.AddNotifyDeliveryQueue(builder.Configuration, "notify:deliveryQueue"); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddHostedService(); builder.Services.AddWorkerHealthChecks(); var app = builder.Build(); app.MapWorkerHealthEndpoints(); await app.RunAsync().ConfigureAwait(false);