/
VFlov
/
NotificationService_1
Обзор
Документация
Войти
/
VFlov
/
NotificationService_1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Services/NotificationService.SmsService/Program.cs
50 строк
2 KB
VFlov
first_commit
27 ноя 2025, 11:43
27 ноя 2025, 11:43
819df67
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using NotificationService.SmsService.Services; using NotificationService.SmsService.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); Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(builder.Configuration) .Enrich.FromLogContext() .WriteTo.Console() .CreateLogger(); builder.Host.UseSerilog(); builder.Services.Configure<RabbitMQSettings>( builder.Configuration.GetSection("RabbitMQ")); builder.Services.Configure<DatabaseSettings>( builder.Configuration.GetSection("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"))); 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>>())); builder.Services.AddScoped<INotificationRepository, NotificationRepository>(); builder.Services.AddScoped<INotificationSender, SmsSender>(); builder.Services.AddHostedService<SmsWorker>(); builder.Services.AddHealthChecks() .AddNpgSql(dbSettings?.ConnectionString ?? string.Empty, name: "database"); var app = builder.Build(); app.UseSerilogRequestLogging(); app.MapHealthChecks("/health"); app.Run();