/
VFlov
/
NotificationService_1
Обзор
Документация
Войти
/
VFlov
/
NotificationService_1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Services/NotificationService.EmailService/Program.cs
57 строк
2 KB
VFlov
first_commit
27 ноя 2025, 11:43
27 ноя 2025, 11:43
819df67
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using NotificationService.EmailService.Services; using NotificationService.EmailService.Workers; using NotificationService.Shared.Configuration; using NotificationService.Shared.Data; using NotificationService.Shared.Infrastructure; using NotificationService.Shared.Interfaces; using NotificationService.Shared.Repositories; using Serilog; var builder = WebApplication.CreateBuilder(args); // Serilog Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(builder.Configuration) .Enrich.FromLogContext() .WriteTo.Console() .CreateLogger(); builder.Host.UseSerilog(); // Settings builder.Services.Configure<RabbitMQSettings>( builder.Configuration.GetSection("RabbitMQ")); builder.Services.Configure<DatabaseSettings>( builder.Configuration.GetSection("Database")); // Database var dbSettings = builder.Configuration.GetSection("Database").Get<DatabaseSettings>(); builder.Services.AddDbContext<NotificationDbContext>(options => options.UseNpgsql(dbSettings?.ConnectionString ?? throw new InvalidOperationException("Database connection string not configured"))); // RabbitMQ var rabbitSettings = builder.Configuration.GetSection("RabbitMQ").Get<RabbitMQSettings>(); builder.Services.AddSingleton<IMessageQueue>(sp => new RabbitMQMessageQueue( rabbitSettings?.ConnectionString ?? "amqp://guest:guest@localhost:5672", sp.GetRequiredService<ILogger<RabbitMQMessageQueue>>())); // Services builder.Services.AddScoped<INotificationRepository, NotificationRepository>(); builder.Services.AddScoped<INotificationSender, EmailSender>(); // Background Worker builder.Services.AddHostedService<EmailWorker>(); // Health Checks builder.Services.AddHealthChecks() .AddNpgSql(dbSettings?.ConnectionString ?? string.Empty, name: "database"); var app = builder.Build(); app.UseSerilogRequestLogging(); app.MapHealthChecks("/health"); app.Run();