51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using Elastic.CommonSchema.Serilog;
|
|
using PARR.NextRun;
|
|
using PARR.NextRunWorker;
|
|
using Serilog;
|
|
|
|
var builder = Host.CreateApplicationBuilder();
|
|
|
|
builder.Services.AddLogging(config =>
|
|
{
|
|
config.ClearProviders();
|
|
|
|
var logger = new LoggerConfiguration();
|
|
|
|
if (builder.Environment.IsProduction())
|
|
logger.WriteTo.Console(new EcsTextFormatter());
|
|
else
|
|
logger.WriteTo.Console();
|
|
|
|
logger.ReadFrom.Configuration(builder.Configuration);
|
|
|
|
config.AddSerilog(logger.CreateLogger());
|
|
});
|
|
|
|
builder.Services.InstallNextRunServices(builder.Configuration);
|
|
builder.Configuration.AddNextRunConfigurations(builder.Services);
|
|
builder.Services.AddNextRunSettings(builder.Configuration);
|
|
|
|
// Задается через переменные окружеия
|
|
var runRabbit = builder.Configuration.GetValue<bool>("ENABLE_RABBIT", true);
|
|
var runInterval = builder.Configuration.GetValue<bool>("ENABLE_INTERVAL", true);
|
|
|
|
if (runRabbit)
|
|
{
|
|
builder.Services.AddHostedService<RabbitWorker>();
|
|
}
|
|
|
|
if (runInterval)
|
|
{
|
|
builder.Services.AddHostedService<IntervalWorker>();
|
|
}
|
|
|
|
// Настройка краша при ошибке. Если хоть один из воркеров упадет, то падает целиком проект
|
|
builder.Services.Configure<HostOptions>(options =>
|
|
{
|
|
options.BackgroundServiceExceptionBehavior = BackgroundServiceExceptionBehavior.StopHost;
|
|
});
|
|
|
|
var host = builder.Build();
|
|
host.Run();
|
|
|