From 1af76405e27c00927ec7c9eb3fa3acead4e31a5a Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Thu, 12 Sep 2024 15:05:47 +1000 Subject: [PATCH] =?UTF-8?q?feat(jobAutoControl):=20=D0=BB=D0=BE=D0=B3?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B0=D0=B2=D1=82=D0=BE-=D0=BA=D0=BE?= =?UTF-8?q?=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PARR.API.sln | 16 +- PARR.API/Domain/.gitkeep | 17 -- PARR.JobAutoControl/IJobAutoControlManager.cs | 7 + .../JobAutoControlInstaller.cs | 44 ++++ PARR.JobAutoControl/JobAutoControlManager.cs | 194 ++++++++++++++++++ .../PARR.JobAutoControl.csproj | 6 + PARR.JobAutoControl/Settings/MqSettings.cs | 28 +++ .../Settings/WorkerSettings.cs | 7 + PARR.JobAutoControlWorker/Dockerfile | 28 +++ .../PARR.JobAutoControlWorker.csproj | 11 + PARR.JobAutoControlWorker/Program.cs | 40 +++- .../Properties/launchSettings.json | 11 +- PARR.JobAutoControlWorker/Worker.cs | 14 +- .../appsettings.Development.json | 8 + PARR.JobAutoControlWorker/appsettings.json | 38 ++++ PARR.NextRun/NextRunInstaller.cs | 14 ++ PARR.NextRun/NextRunManager.cs | 2 +- PARR.NextRunWorker/Program.cs | 3 + docker-compose.dcproj | 1 + 19 files changed, 451 insertions(+), 38 deletions(-) delete mode 100644 PARR.API/Domain/.gitkeep create mode 100644 PARR.JobAutoControl/IJobAutoControlManager.cs create mode 100644 PARR.JobAutoControl/JobAutoControlInstaller.cs create mode 100644 PARR.JobAutoControl/JobAutoControlManager.cs create mode 100644 PARR.JobAutoControl/Settings/MqSettings.cs create mode 100644 PARR.JobAutoControl/Settings/WorkerSettings.cs create mode 100644 PARR.JobAutoControlWorker/Dockerfile diff --git a/PARR.API.sln b/PARR.API.sln index d650c031..48f2bca6 100644 --- a/PARR.API.sln +++ b/PARR.API.sln @@ -72,9 +72,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.TemplateDistributor", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.TemplateDistributorWorker", "PARR.TemplateDistributorWorker\PARR.TemplateDistributorWorker.csproj", "{89155CAB-295D-4937-8B7A-05170587A2BC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.TemplateActivator", "PARR.TemplateActivator\PARR.TemplateActivator.csproj", "{C92621CD-EC6A-4788-94CF-D03C0A386F12}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.TemplateActivator", "PARR.TemplateActivator\PARR.TemplateActivator.csproj", "{C92621CD-EC6A-4788-94CF-D03C0A386F12}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.TemplateActivatorWorker", "PARR.TemplateActivatorWorker\PARR.TemplateActivatorWorker.csproj", "{97E096AA-26F3-417A-A969-381464F4EF43}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.TemplateActivatorWorker", "PARR.TemplateActivatorWorker\PARR.TemplateActivatorWorker.csproj", "{97E096AA-26F3-417A-A969-381464F4EF43}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.JobAutoControlWorker", "PARR.JobAutoControlWorker\PARR.JobAutoControlWorker.csproj", "{EFDC0833-E79C-476B-BF91-58E8778EA2E2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.JobAutoControl", "PARR.JobAutoControl\PARR.JobAutoControl.csproj", "{2C35CCD5-6DCD-4640-98DA-D2DC11CE3BA5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -208,6 +212,14 @@ Global {97E096AA-26F3-417A-A969-381464F4EF43}.Debug|Any CPU.Build.0 = Debug|Any CPU {97E096AA-26F3-417A-A969-381464F4EF43}.Release|Any CPU.ActiveCfg = Release|Any CPU {97E096AA-26F3-417A-A969-381464F4EF43}.Release|Any CPU.Build.0 = Release|Any CPU + {EFDC0833-E79C-476B-BF91-58E8778EA2E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EFDC0833-E79C-476B-BF91-58E8778EA2E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EFDC0833-E79C-476B-BF91-58E8778EA2E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EFDC0833-E79C-476B-BF91-58E8778EA2E2}.Release|Any CPU.Build.0 = Release|Any CPU + {2C35CCD5-6DCD-4640-98DA-D2DC11CE3BA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C35CCD5-6DCD-4640-98DA-D2DC11CE3BA5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C35CCD5-6DCD-4640-98DA-D2DC11CE3BA5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C35CCD5-6DCD-4640-98DA-D2DC11CE3BA5}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PARR.API/Domain/.gitkeep b/PARR.API/Domain/.gitkeep deleted file mode 100644 index 488dff50..00000000 --- a/PARR.API/Domain/.gitkeep +++ /dev/null @@ -1,17 +0,0 @@ -Import System.Runtime.InteropServices - -' In SDK-style projects such as this one, several assembly attributes that were historically -' defined in this file are now automatically added during build and populated with -' values defined in project properties. For details of which attributes are included -' and how to customise this process see: https://aka.ms/assembly-info-properties - - -' Setting ComVisible to false makes the types in this assembly not visible to COM -' components. If you need to access a type in this assembly from COM, set the ComVisible -' attribute to true on that type. - - - -' The following GUID is for the ID of the typelib if this project is exposed to COM. - - diff --git a/PARR.JobAutoControl/IJobAutoControlManager.cs b/PARR.JobAutoControl/IJobAutoControlManager.cs new file mode 100644 index 00000000..89652c49 --- /dev/null +++ b/PARR.JobAutoControl/IJobAutoControlManager.cs @@ -0,0 +1,7 @@ +namespace PARR.JobAutoControl +{ + public interface IJobAutoControlManager + { + Task StartAsync(); + } +} diff --git a/PARR.JobAutoControl/JobAutoControlInstaller.cs b/PARR.JobAutoControl/JobAutoControlInstaller.cs new file mode 100644 index 00000000..44599664 --- /dev/null +++ b/PARR.JobAutoControl/JobAutoControlInstaller.cs @@ -0,0 +1,44 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using PARR.BLL; +using PARR.DAL; +using PARR.JobAutoControl.Settings; + +namespace PARR.JobAutoControl +{ + public static class JobAutoControlInstaller + { + + public static void InstallJobAutoControlServices(this IServiceCollection services, IConfiguration configuration) + { + services.InstallDalServices(configuration); + services.InstallBllServices(configuration); + + var settings = new WorkerSettings(); + configuration.GetSection(nameof(WorkerSettings)).Bind(settings); + services.AddSingleton(settings); + + var mqSettings = new MqSettings(); + configuration.GetSection(nameof(MqSettings)).Bind(mqSettings); + services.AddSingleton(mqSettings); + + + services.AddTransient(); + } + + + public static IConfigurationBuilder AddJobAutoControlConfigurations(this IConfigurationBuilder builder, IServiceCollection services) + { + builder.AddDalConfigurations(services); + + return builder; + } + + + public static void AddJobAutoControlSettings(this IServiceCollection services, IConfiguration configuration) + { + services.AddDallSettings(configuration); + } + + } +} diff --git a/PARR.JobAutoControl/JobAutoControlManager.cs b/PARR.JobAutoControl/JobAutoControlManager.cs new file mode 100644 index 00000000..e92cf114 --- /dev/null +++ b/PARR.JobAutoControl/JobAutoControlManager.cs @@ -0,0 +1,194 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using PARR.BLL.Domain.Mq; +using PARR.BLL.Services.Interfaces; +using PARR.Constants; +using PARR.DAL.Services.Interfaces; +using PARR.JobAutoControl.Settings; +using System.Text.Json; + +namespace PARR.JobAutoControl +{ + internal class JobAutoControlManager : IJobAutoControlManager + { + private readonly WorkerSettings workerSettings; + private readonly ILogger logger; + private readonly IIntervalService intervalService; + private readonly IServiceProvider serviceProvider; + private readonly MqSettings mqSettings; + + public JobAutoControlManager( + WorkerSettings workerSettings, + ILogger logger, + IIntervalService intervalService, + IServiceProvider serviceProvider, + MqSettings mqSettings + ) + { + this.workerSettings = workerSettings; + this.logger = logger; + this.intervalService = intervalService; + this.serviceProvider = serviceProvider; + this.mqSettings = mqSettings; + } + + public async Task StartAsync() + { + logger.LogInformation("Запуск сервиса управления авто-контролем РР (JobAutoControl)"); + + await intervalService.IntervalInitAsync(async () => + { + using (var scope = serviceProvider.CreateScope()) + { + var jobAutoControlService = scope.ServiceProvider.GetService(); + var mqService = scope.ServiceProvider.GetService(); + + if (jobAutoControlService == null || mqService == null) + throw new Exception($"Не смог получить серивс {nameof(IJobAutoControlService)} или {nameof(IMqService)}"); + + await HandlerAsync(jobAutoControlService, mqService); + } + }, workerSettings.RepeatEvery); + } + + + private async Task HandlerAsync(IJobAutoControlService jobAutoControlService, IMqService mqService) + { + await GenerateAsync(jobAutoControlService, mqService); + await DeactivateAsync(jobAutoControlService, mqService); + await ActivateAsync(jobAutoControlService, mqService); + } + + + /// + /// Генерировать новые РР + /// + /// + /// + /// + private async Task GenerateAsync(IJobAutoControlService jobAutoControlService, IMqService mqService) + { + var jobsToGenerate = await jobAutoControlService.Get() + .Include(t => t.JobEkMasks) + .Include(t => t.JobAutoControlInEkStatuses) + .Include(t => t.ApplicationsInWork) + .Where(t => t.CreateNew && t.JobEkMasks.Any() && t.JobAutoControlInEkStatuses.Any()) + .ToListAsync(); + + logger.LogInformation($"Найдено РР с включенным авто-контролем для генерации шаблонов и расписаний: {jobsToGenerate.Count()} шт."); + + if (!jobsToGenerate.Any()) + return; + + + jobsToGenerate.ForEach(job => + { + job.JobEkMasks.ToList().ForEach(ek => + { + job.JobAutoControlInEkStatuses.ToList().ForEach(ekStatus => + { + var request = new GeneratorTemplateMq + { + Action = "create", + ApplicationId = job.ApplicationsInWork!.ApplicationId, + Ek = ek.Name, + WorkId = job.ApplicationsInWork!.WorkId, + StatusEk = ekStatus.EkStatusCode, + IsActiveTemplate = job.OnTemplateIsActive, + IsActiveSchedule = job.OnScheduleIsActive + }; + + var msg = JsonSerializer.Serialize(request); + + var result = mqService.Send(mqSettings.Generator, new[] { msg }); + + if (result.IsSuccess) + logger.LogInformation($"Отправлен запрос на генерацию: {msg}"); + else + logger.LogError($"Ошибка при отправке запроса на генерацию: {msg}"); + }); + }); + }); + } + + + /// + /// Деактивировать РР + /// + /// + /// + /// + private async Task DeactivateAsync(IJobAutoControlService jobAutoControlService, IMqService mqService) + { + var jobsToDeactivate = await jobAutoControlService.Get() + .Include(t => t.JobEkMasks) + .Include(t => t.JobAutoControlInEkStatuses) + .Where(t => t.Deactivate && t.JobEkMasks.Any() && t.JobAutoControlInEkStatuses.Any()) + .Select(t => t.ApplicationInWorkId) + .ToListAsync(); + + logger.LogInformation($"Найдено РР с включенным авто-контролем для деактивации шаблонов и расписаний: {jobsToDeactivate.Count()} шт."); + + if (!jobsToDeactivate.Any()) + return; + + jobsToDeactivate.ForEach(applicationInWorkId => + { + var request = new TemplateActivatorMq + { + Action = TemplateActivatorActionsEnum.DeactivateAllForAutoControl, + ApplicationInWorkId = applicationInWorkId + }; + + var msg = JsonSerializer.Serialize(request); + + var result = mqService.Send(mqSettings.Activator, new[] { msg }); + + if (result.IsSuccess) + logger.LogInformation($"Отправлен запрос на деактивацию: {msg}"); + else + logger.LogError($"Ошибка при отправке запроса на деактивацию: {msg}"); + }); + } + + + /// + /// Активировать РР + /// + /// + /// + /// + private async Task ActivateAsync(IJobAutoControlService jobAutoControlService, IMqService mqService) + { + var jobsToActivate = await jobAutoControlService.Get() + .Include(t => t.JobEkMasks) + .Include(t => t.JobAutoControlInEkStatuses) + .Where(t => t.Activate && t.JobEkMasks.Any() && t.JobAutoControlInEkStatuses.Any()) + .Select(t => t.ApplicationInWorkId) + .ToListAsync(); + + if (!jobsToActivate.Any()) + return; + + jobsToActivate.ForEach(applicationInWorkId => + { + var request = new TemplateActivatorMq + { + Action = TemplateActivatorActionsEnum.ActivateAllForAutoControl, + ApplicationInWorkId = applicationInWorkId + }; + + var msg = JsonSerializer.Serialize(request); + + var result = mqService.Send(mqSettings.Activator, new[] { msg }); + + if (result.IsSuccess) + logger.LogInformation($"Отправлен запрос на активацию: {msg}"); + else + logger.LogError($"Ошибка при отправке запроса на активацию: {msg}"); + }); + } + + } +} diff --git a/PARR.JobAutoControl/PARR.JobAutoControl.csproj b/PARR.JobAutoControl/PARR.JobAutoControl.csproj index cfadb03d..4d002e29 100644 --- a/PARR.JobAutoControl/PARR.JobAutoControl.csproj +++ b/PARR.JobAutoControl/PARR.JobAutoControl.csproj @@ -6,4 +6,10 @@ enable + + + + + + diff --git a/PARR.JobAutoControl/Settings/MqSettings.cs b/PARR.JobAutoControl/Settings/MqSettings.cs new file mode 100644 index 00000000..6d201ccc --- /dev/null +++ b/PARR.JobAutoControl/Settings/MqSettings.cs @@ -0,0 +1,28 @@ +using PARR.BLL.Contracts.Interfaces; + +namespace PARR.JobAutoControl.Settings +{ + internal class MqSettings + { + public Generator Generator { get; set; } + public Activator Activator { get; set; } + } + + internal class Generator : IMqSettings + { + public string HostName { get; set; } = string.Empty; + public string QueueName { get; set; } = string.Empty; + public string User { get; set; } = string.Empty; + public string Password { get; set; } = string.Empty; + } + + internal class Activator : IMqSettings + { + public string HostName { get; set; } = string.Empty; + public string QueueName { get; set; } = string.Empty; + public string User { get; set; } = string.Empty; + public string Password { get; set; } = string.Empty; + } + + +} diff --git a/PARR.JobAutoControl/Settings/WorkerSettings.cs b/PARR.JobAutoControl/Settings/WorkerSettings.cs new file mode 100644 index 00000000..27132aea --- /dev/null +++ b/PARR.JobAutoControl/Settings/WorkerSettings.cs @@ -0,0 +1,7 @@ +namespace PARR.JobAutoControl.Settings +{ + internal class WorkerSettings + { + public TimeSpan RepeatEvery { get; set; } + } +} diff --git a/PARR.JobAutoControlWorker/Dockerfile b/PARR.JobAutoControlWorker/Dockerfile new file mode 100644 index 00000000..600dc681 --- /dev/null +++ b/PARR.JobAutoControlWorker/Dockerfile @@ -0,0 +1,28 @@ +#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM 10.99.253.167:8090/dotnet/runtime:7.0 AS base +WORKDIR /app + +FROM 10.99.253.167:8090/dotnet/sdk:7.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["NuGet.config", "."] +COPY ["PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj", "PARR.JobAutoControlWorker/"] +COPY ["PARR.JobAutoControl/PARR.JobAutoControl.csproj", "PARR.JobAutoControl/"] +COPY ["PARR.BLL/PARR.BLL.csproj", "PARR.BLL/"] +COPY ["PARR.Constants/PARR.Constants.csproj", "PARR.Constants/"] +COPY ["PARR.DAL/PARR.DAL.csproj", "PARR.DAL/"] +RUN dotnet restore "./PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj" +COPY . . +WORKDIR "/src/PARR.JobAutoControlWorker" +RUN dotnet build "./PARR.JobAutoControlWorker.csproj" -c $BUILD_CONFIGURATION -o /app/build + +FROM build AS publish +ARG app_version=0.0.0-default +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./PARR.JobAutoControlWorker.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false /p:Version=$app_version + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "PARR.JobAutoControlWorker.dll"] \ No newline at end of file diff --git a/PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj b/PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj index 46d83d86..afdb4746 100644 --- a/PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj +++ b/PARR.JobAutoControlWorker/PARR.JobAutoControlWorker.csproj @@ -5,9 +5,20 @@ enable enable dotnet-PARR.JobAutoControlWorker-50dc4ed1-928f-47c3-855e-137f03acd19c + Linux + + + + + + + + + + diff --git a/PARR.JobAutoControlWorker/Program.cs b/PARR.JobAutoControlWorker/Program.cs index c20b54ee..66abbf50 100644 --- a/PARR.JobAutoControlWorker/Program.cs +++ b/PARR.JobAutoControlWorker/Program.cs @@ -1,10 +1,38 @@ +using Elastic.CommonSchema.Serilog; +using PARR.JobAutoControl; using PARR.JobAutoControlWorker; +using Serilog; -IHost host = Host.CreateDefaultBuilder(args) - .ConfigureServices(services => - { - services.AddHostedService(); - }) - .Build(); +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.InstallJobAutoControlServices(builder.Configuration); +builder.Configuration.AddJobAutoControlConfigurations(builder.Services); +builder.Services.AddJobAutoControlSettings(builder.Configuration); + + +builder.Services.AddHostedService(); + +var host = builder.Build(); host.Run(); + + + + + + diff --git a/PARR.JobAutoControlWorker/Properties/launchSettings.json b/PARR.JobAutoControlWorker/Properties/launchSettings.json index aefd80bf..ade3c5f5 100644 --- a/PARR.JobAutoControlWorker/Properties/launchSettings.json +++ b/PARR.JobAutoControlWorker/Properties/launchSettings.json @@ -1,11 +1,14 @@ -{ +{ "profiles": { "PARR.JobAutoControlWorker": { "commandName": "Project", - "dotnetRunMessages": true, "environmentVariables": { "DOTNET_ENVIRONMENT": "Development" - } + }, + "dotnetRunMessages": true + }, + "Container (Dockerfile)": { + "commandName": "Docker" } } -} +} \ No newline at end of file diff --git a/PARR.JobAutoControlWorker/Worker.cs b/PARR.JobAutoControlWorker/Worker.cs index f967596c..7ac9a80d 100644 --- a/PARR.JobAutoControlWorker/Worker.cs +++ b/PARR.JobAutoControlWorker/Worker.cs @@ -1,21 +1,19 @@ +using PARR.JobAutoControl; + namespace PARR.JobAutoControlWorker { public class Worker : BackgroundService { - private readonly ILogger _logger; + private readonly IJobAutoControlManager jobAutoControlManager; - public Worker(ILogger logger) + public Worker(IJobAutoControlManager jobAutoControlManager) { - _logger = logger; + this.jobAutoControlManager = jobAutoControlManager; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { - while (!stoppingToken.IsCancellationRequested) - { - _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); - await Task.Delay(1000, stoppingToken); - } + await jobAutoControlManager.StartAsync(); } } } diff --git a/PARR.JobAutoControlWorker/appsettings.Development.json b/PARR.JobAutoControlWorker/appsettings.Development.json index b2dcdb67..0a4dcd73 100644 --- a/PARR.JobAutoControlWorker/appsettings.Development.json +++ b/PARR.JobAutoControlWorker/appsettings.Development.json @@ -4,5 +4,13 @@ "Default": "Information", "Microsoft.Hosting.Lifetime": "Information" } + }, + "MqSettings": { + "Generator": { + "HostName": "10.99.253.216" + }, + "Activator": { + "HostName": "10.99.253.216" + } } } diff --git a/PARR.JobAutoControlWorker/appsettings.json b/PARR.JobAutoControlWorker/appsettings.json index b2dcdb67..dfca8493 100644 --- a/PARR.JobAutoControlWorker/appsettings.json +++ b/PARR.JobAutoControlWorker/appsettings.json @@ -1,8 +1,46 @@ { + "ConnectionStrings": { + "DefaultConnection": "Server=10.99.253.184;Database=parr;User Id=app_parr; Password=PosdfkhT&)%sdfligL&%5546;" + }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.Hosting.Lifetime": "Information" } + }, + "Serilog": { + "MinimumLevel": { + "Default": "Debug", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Debug" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, + "WorkerSettings": { + "RepeatEvery": "6:00:00" + }, + "MqSettings": { + "Generator": { + "HostName": "parr-rabbitmq", + "QueueName": "parr-generate-templates", + "User": "generate_templates_api", + "Password": "DHhjgdsf*&%95" + }, + "Activator": { + "HostName": "parr-rabbitmq", + "QueueName": "parr-template-activator", + "User": "template_activator_writer", + "Password": "Gfkjhsdg*%fsdf" + } } } diff --git a/PARR.NextRun/NextRunInstaller.cs b/PARR.NextRun/NextRunInstaller.cs index c3d0cfb1..062b4d38 100644 --- a/PARR.NextRun/NextRunInstaller.cs +++ b/PARR.NextRun/NextRunInstaller.cs @@ -19,5 +19,19 @@ namespace PARR.NextRun services.AddTransient(); } + + + public static IConfigurationBuilder AddNextRunConfigurations(this IConfigurationBuilder builder, IServiceCollection services) + { + builder.AddDalConfigurations(services); + + return builder; + } + + + public static void AddNextRunSettings(this IServiceCollection services, IConfiguration configuration) + { + services.AddDallSettings(configuration); + } } } diff --git a/PARR.NextRun/NextRunManager.cs b/PARR.NextRun/NextRunManager.cs index 6c7193c7..3ec8fcf1 100644 --- a/PARR.NextRun/NextRunManager.cs +++ b/PARR.NextRun/NextRunManager.cs @@ -41,7 +41,7 @@ namespace PARR.NextRun var templateService = scope.ServiceProvider.GetService(); if (templateService == null || esppSchService == null) - throw new Exception("Не смог получить серивс ITemplateService или IEsppScheduleTransformService"); + throw new Exception($"Не смог получить серивс {nameof(ITemplateService)} или {nameof(IEsppScheduleTransformService)}"); await HandlerAsync(templateService, esppSchService); } diff --git a/PARR.NextRunWorker/Program.cs b/PARR.NextRunWorker/Program.cs index a61e2e0f..46df3c1b 100644 --- a/PARR.NextRunWorker/Program.cs +++ b/PARR.NextRunWorker/Program.cs @@ -22,6 +22,9 @@ builder.Services.AddLogging(config => }); builder.Services.InstallNextRunServices(builder.Configuration); +builder.Configuration.AddNextRunConfigurations(builder.Services); +builder.Services.AddNextRunSettings(builder.Configuration); + builder.Services.AddHostedService(); var host = builder.Build(); diff --git a/docker-compose.dcproj b/docker-compose.dcproj index 65e28ef3..185887b9 100644 --- a/docker-compose.dcproj +++ b/docker-compose.dcproj @@ -16,6 +16,7 @@ +