diff --git a/PARR.API.sln b/PARR.API.sln index 561b8da1..efadc31f 100644 --- a/PARR.API.sln +++ b/PARR.API.sln @@ -96,6 +96,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.TemplateTaskGenerator" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.TemplateTaskGeneratorWorker", "PARR.TemplateTaskGeneratorWorker\PARR.TemplateTaskGeneratorWorker.csproj", "{93249642-DF7D-41A1-87C0-6E3BAECB43EC}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.TemplateMatcher", "PARR.TemplateMatcher\PARR.TemplateMatcher.csproj", "{EADC9A11-426A-41E9-98B4-010295412FF5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.TemplateMatcherWorker", "PARR.TemplateMatcherWorker\PARR.TemplateMatcherWorker.csproj", "{DA6B2A17-6E64-4E2C-8D4C-E278BEE94E03}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -268,6 +272,14 @@ Global {93249642-DF7D-41A1-87C0-6E3BAECB43EC}.Debug|Any CPU.Build.0 = Debug|Any CPU {93249642-DF7D-41A1-87C0-6E3BAECB43EC}.Release|Any CPU.ActiveCfg = Release|Any CPU {93249642-DF7D-41A1-87C0-6E3BAECB43EC}.Release|Any CPU.Build.0 = Release|Any CPU + {EADC9A11-426A-41E9-98B4-010295412FF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EADC9A11-426A-41E9-98B4-010295412FF5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EADC9A11-426A-41E9-98B4-010295412FF5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EADC9A11-426A-41E9-98B4-010295412FF5}.Release|Any CPU.Build.0 = Release|Any CPU + {DA6B2A17-6E64-4E2C-8D4C-E278BEE94E03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA6B2A17-6E64-4E2C-8D4C-E278BEE94E03}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA6B2A17-6E64-4E2C-8D4C-E278BEE94E03}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA6B2A17-6E64-4E2C-8D4C-E278BEE94E03}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PARR.API/Contracts/V1/ApiRoutes.cs b/PARR.API/Contracts/V1/ApiRoutes.cs index b08c7295..4009136b 100644 --- a/PARR.API/Contracts/V1/ApiRoutes.cs +++ b/PARR.API/Contracts/V1/ApiRoutes.cs @@ -468,6 +468,15 @@ #endregion + #region SyncTask + public static class SyncTask + { + public const string MatchTemplatesForJob = Base + "/sync-tasks/jobs/{jobId}/match-templates"; + public const string MatchTemplatesForJobGroup = Base + "/sync-tasks/job-groups/{jobGroupId}/match-templates"; + public const string MatchTemplatesForTemplate = Base + "/sync-tasks/templates/{templateId}/match-templates"; + } + #endregion + public static class Weekend { diff --git a/PARR.API/Controllers/V1/SyncTaskController.cs b/PARR.API/Controllers/V1/SyncTaskController.cs new file mode 100644 index 00000000..ec973fa5 --- /dev/null +++ b/PARR.API/Controllers/V1/SyncTaskController.cs @@ -0,0 +1,62 @@ +using Microsoft.AspNetCore.Mvc; +using PARR.API.Contracts.V1; +using PARR.API.Contracts.V1.Responses.Base; +using PARR.API.Controllers.V1.Base; +using PARR.API.Services.Implementations; +using PARR.API.Services.Interfaces; +using PARR.API.Settings; +using PARR.BLL.Domain.Mq; +using PARR.BLL.Services.Interfaces; +using System.Text.Json; + +namespace PARR.API.Controllers.V1 +{ + public class SyncTaskController : BaseApiController + { + private readonly ILogger logger; + private readonly IMqService mqService; + private readonly IUriService uriService; + private readonly MqSettings mqSettings; + + public SyncTaskController( + ILogger logger, + IMqService mqService, + IUriService uriService, + MqSettings mqSettings + ) + { + this.logger = logger; + this.mqService = mqService; + this.uriService = uriService; + this.mqSettings = mqSettings; + } + + /// + /// Сопоставить текущие шаблоны для Job, создать недостущие шаблоны + /// + /// ИД шаблона + [HttpPost(ApiRoutes.SyncTask.MatchTemplatesForJob)] + public async Task MatchTemplatesForJob([FromRoute] Guid jobId) + { + //24b3529a-dd43-444a-b10e-ac54fefd046a + var matchTemplateTask = new TemplateMatcherMq + { + Id = jobId, + EntityType = Constants.SyncTaskEntityTypeEnum.Job + }; + + var msg = JsonSerializer.Serialize(matchTemplateTask); + logger.LogDebug("Подготовлено сообщение: {Message}", new[] { msg }); + + var result = await mqService.SendAsync(mqSettings.TemplatesMatcher, new[] { msg }); + logger.LogDebug("Получен код отпрвки: {IsSuccess}", result.IsSuccess); + + if (!result.IsSuccess) + return BadRequest(new Response(false, new List { new ErrorModel { Message = "Ошибка отправки сообщения в очередь" } })); + + var createdUri = uriService.GetAllUri(ApiRoutes.SyncTask.MatchTemplatesForJob); + + return Created(createdUri, new Response(null, true, new List(), "Отправлен запрос на сопоставление шаблонов и Job")); + } + } +} diff --git a/PARR.API/Settings/MqSettings.cs b/PARR.API/Settings/MqSettings.cs index 971596b0..7835d679 100644 --- a/PARR.API/Settings/MqSettings.cs +++ b/PARR.API/Settings/MqSettings.cs @@ -8,6 +8,7 @@ namespace PARR.API.Settings public MqTemplateDistributor TemplateDistributor { get; set; } = new MqTemplateDistributor(); public MqTemplateActivator TemplateActivator { get; set; } = new MqTemplateActivator(); public MqStatistics Statistics { get; set; } = new MqStatistics(); + public MqTemplatesMatcher TemplatesMatcher { get; set; } = new MqTemplatesMatcher(); } public class MqGenerateTemplates : IMqSettings @@ -50,4 +51,13 @@ namespace PARR.API.Settings public string Password { get; set; } = string.Empty; public ushort? PrefetchCount { get; set; } = 0; } + + public class MqTemplatesMatcher : 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; + public ushort? PrefetchCount { get; set; } = 0; + } } diff --git a/PARR.API/appsettings.Development.json b/PARR.API/appsettings.Development.json index ba21738f..23cc8200 100644 --- a/PARR.API/appsettings.Development.json +++ b/PARR.API/appsettings.Development.json @@ -10,7 +10,7 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Information", + "Default": "Debug", "Override": { "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" @@ -30,6 +30,9 @@ "TemplateActivator": { "HostName": "10.99.253.216" }, + "TemplatesMatcher": { + "HostName": "10.99.253.216" + }, "Statistics": { "StatMqAuth": { "HostName": "10.99.253.216" diff --git a/PARR.API/appsettings.json b/PARR.API/appsettings.json index 9903ceb0..84ecdb2d 100644 --- a/PARR.API/appsettings.json +++ b/PARR.API/appsettings.json @@ -57,6 +57,12 @@ "User": "template_activator_writer", "Password": "Gfkjhsdg*%fsdf" }, + "TemplatesMatcher": { + "HostName": "parr-rabbitmq", + "QueueName": "parr-template-matcher", + "User": "template_matcher_writer", + "Password": "8ndd%BpP61Ias;ldk23CkvZM" + }, "Statistics": { "StatMqAuth": { "HostName": "parr-rabbitmq", diff --git a/PARR.BLL/Domain/Mq/TemplateMatcherMq.cs b/PARR.BLL/Domain/Mq/TemplateMatcherMq.cs new file mode 100644 index 00000000..ebb7d829 --- /dev/null +++ b/PARR.BLL/Domain/Mq/TemplateMatcherMq.cs @@ -0,0 +1,10 @@ +using PARR.Constants; + +namespace PARR.BLL.Domain.Mq +{ + public class TemplateMatcherMq + { + public Guid Id { get; set; } + public SyncTaskEntityTypeEnum EntityType { get; set; } + } +} diff --git a/PARR.Constants/SyncTaskEntityTypeEnum.cs b/PARR.Constants/SyncTaskEntityTypeEnum.cs new file mode 100644 index 00000000..f919c9bf --- /dev/null +++ b/PARR.Constants/SyncTaskEntityTypeEnum.cs @@ -0,0 +1,13 @@ +using System.Text.Json.Serialization; + +namespace PARR.Constants +{ + [JsonConverter(typeof(JsonStringEnumConverter))] + public enum SyncTaskEntityTypeEnum + { + Job, + JobGroup, + Template + } + +} diff --git a/PARR.TemplateMatcher/IMqTemplateTaskGenerator.cs b/PARR.TemplateMatcher/IMqTemplateTaskGenerator.cs new file mode 100644 index 00000000..bef4acc0 --- /dev/null +++ b/PARR.TemplateMatcher/IMqTemplateTaskGenerator.cs @@ -0,0 +1,8 @@ +namespace PARR.TemplateMatcher +{ + public interface IMqTemplateMatcher + { + Task StartAsync(); + Task StopAsync(); + } +} diff --git a/PARR.TemplateMatcher/ITemplateMatcher.cs b/PARR.TemplateMatcher/ITemplateMatcher.cs new file mode 100644 index 00000000..2cc6c270 --- /dev/null +++ b/PARR.TemplateMatcher/ITemplateMatcher.cs @@ -0,0 +1,9 @@ +namespace PARR.TemplateMatcher +{ + internal interface ITemplateMatcher + { + Task MatchTemplatesForJob(Guid jobId); + Task MatchTemplatesForJobGroup(Guid jobGroupId); + Task MatchTemplatesForTemplate(Guid templateId); + } +} diff --git a/PARR.TemplateMatcher/MqTemplateMatcher.cs b/PARR.TemplateMatcher/MqTemplateMatcher.cs new file mode 100644 index 00000000..5513e2bc --- /dev/null +++ b/PARR.TemplateMatcher/MqTemplateMatcher.cs @@ -0,0 +1,87 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using PARR.BLL.Domain.Mq; +using PARR.BLL.Services.Interfaces; +using PARR.TemplateMatcher.Services.Interfaces; +using PARR.TemplateMatcher.Settings; + +namespace PARR.TemplateMatcher +{ + internal class MqTemplateMatcher : IMqTemplateMatcher + { + private readonly ILogger logger; + private readonly MqSettings mqSettings; + private readonly IMqService mqService; + private readonly ITransformService transformService; + private readonly IServiceProvider serviceProvider; + + public MqTemplateMatcher( + ILogger logger, + MqSettings mqSettings, + IMqService mqService, + ITransformService transformService, + IServiceProvider serviceProvider + ) + { + this.logger = logger; + this.mqSettings = mqSettings; + this.mqService = mqService; + this.transformService = transformService; + this.serviceProvider = serviceProvider; + } + + + public async Task StartAsync() + { + var isConnected = await mqService.InitConsumerAsync(mqSettings.TemplateMatcher, HandleMessageAsync); + + if (!isConnected) + throw new Exception("Ошибка при подключении к RabbitMq"); + } + + + private async Task HandleMessageAsync(string msg) + { + logger.LogInformation($"Получили запрос: {msg}"); + + var query = transformService.GetModelFromJson(msg); + if (query == null) + return; + + await using (var scope = serviceProvider.CreateAsyncScope()) + { + var templateMatcherService = GetServiceInScope(scope); + + switch (query.EntityType) + { + case Constants.SyncTaskEntityTypeEnum.Job: + var validatorService = GetServiceInScope(scope); + if (!await validatorService.IsValidAsync(query.Id)) + return; + + await templateMatcherService.MatchTemplatesForJob(query.Id); + break; + default: + logger.LogWarning("Неизвестный тип сущности: {EntityType}", query.EntityType); + break; + } + } + } + + + public async Task StopAsync() + { + await mqService.DisposeAsync(); + } + + + private Service GetServiceInScope(IServiceScope scope) + { + var service = scope.ServiceProvider.GetService(); + if (service == null) + throw new Exception($"Не найден сервис: {nameof(Service)}"); + + return service; + } + } +} diff --git a/PARR.TemplateMatcher/PARR.TemplateMatcher.csproj b/PARR.TemplateMatcher/PARR.TemplateMatcher.csproj new file mode 100644 index 00000000..21190861 --- /dev/null +++ b/PARR.TemplateMatcher/PARR.TemplateMatcher.csproj @@ -0,0 +1,14 @@ + + + + net7.0 + enable + enable + + + + + + + + diff --git a/PARR.TemplateMatcher/Services/Implemetaions/JobValidatorService.cs b/PARR.TemplateMatcher/Services/Implemetaions/JobValidatorService.cs new file mode 100644 index 00000000..741e761b --- /dev/null +++ b/PARR.TemplateMatcher/Services/Implemetaions/JobValidatorService.cs @@ -0,0 +1,33 @@ +using Microsoft.Extensions.Logging; +using PARR.DAL.Services.Interfaces.Job; +using PARR.TemplateMatcher.Services.Interfaces; + +namespace PARR.TemplateMatcher.Services.Implemetaions +{ + internal class JobValidatorService : IJobValidatorService + { + private readonly ILogger logger; + private readonly IJobService jobService; + + public JobValidatorService( + ILogger logger, + IJobService jobService + ) + { + this.logger = logger; + this.jobService = jobService; + } + public async Task IsValidAsync(Guid jobId) + { + var isExist = await jobService.GetAsync(jobId); + + if (isExist == null) + { + logger.LogError($"Не найдена регалментная работа {nameof(jobId)}: {jobId}"); + return false; + } + + return true; + } + } +} diff --git a/PARR.TemplateMatcher/Services/Interfaces/IJobValidatorService.cs b/PARR.TemplateMatcher/Services/Interfaces/IJobValidatorService.cs new file mode 100644 index 00000000..8fa90b2e --- /dev/null +++ b/PARR.TemplateMatcher/Services/Interfaces/IJobValidatorService.cs @@ -0,0 +1,12 @@ +namespace PARR.TemplateMatcher.Services.Interfaces +{ + internal interface IJobValidatorService + { + /// + /// Проверяет существование регламентной работы + /// + /// + /// + Task IsValidAsync(Guid jobId); + } +} diff --git a/PARR.TemplateMatcher/Settings/MqSettings.cs b/PARR.TemplateMatcher/Settings/MqSettings.cs new file mode 100644 index 00000000..a9485785 --- /dev/null +++ b/PARR.TemplateMatcher/Settings/MqSettings.cs @@ -0,0 +1,34 @@ +using PARR.BLL.Contracts.Interfaces; +using PARR.BLL.Domain.Mq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PARR.TemplateMatcher.Settings +{ + public class MqSettings + { + public TemplateMatcher TemplateMatcher { get; set; } = new TemplateMatcher(); + public TemplateGenerator TemplateGenerator { get; set; } = new TemplateGenerator(); + } + + internal class TemplateMatcher : 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; + public ushort? PrefetchCount { get; set; } = 0; + } + + internal class TemplateGenerator : 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; + public ushort? PrefetchCount { get; set; } = 0; + } +} diff --git a/PARR.TemplateMatcher/TemplateMatcher.cs b/PARR.TemplateMatcher/TemplateMatcher.cs new file mode 100644 index 00000000..7c109ebf --- /dev/null +++ b/PARR.TemplateMatcher/TemplateMatcher.cs @@ -0,0 +1,71 @@ +using Microsoft.Extensions.Logging; +using PARR.BLL.Domain.Mq; +using PARR.BLL.Services.Interfaces; +using PARR.Common.Domain; +using PARR.Constants; +using PARR.DAL.DomainServices.Interfaces; +using PARR.TemplateMatcher.Settings; +using System.Text.Json; + +namespace PARR.TemplateMatcher +{ + public class TemplateMatcher : ITemplateMatcher + { + private readonly Logger logger; + private readonly IUnitFilterService unitFilterService; + private readonly MqSettings mqSettings; + private readonly IMqService mqService; + + public TemplateMatcher( + Logger logger, + IUnitFilterService unitFilterService, + MqSettings mqSettings, + IMqService mqService + ) + { + this.logger = logger; + this.unitFilterService = unitFilterService; + this.mqSettings = mqSettings; + this.mqService = mqService; + } + public async Task MatchTemplatesForJob(Guid jobId) + { + var unitIdsToCreateTemplate = await unitFilterService.GetUnitsIdForNotExistTemplatesByJobFilterAsync(jobId); + + if (unitIdsToCreateTemplate == null || !unitIdsToCreateTemplate.Any()) + return; + + foreach (var unitId in unitIdsToCreateTemplate) + { + var mqRequest = new TemplateGeneratorWorkerMq + { + JobId = jobId, + UnitId = unitId, + HistoryInitiator = new HistoryInitiator { InitiatorComment = "Запрос на создание шаблона", InitiatorParrComponentId = ParrComponentsEnum.TemplateTaskGenerator } + }; + + var msg = JsonSerializer.Serialize(mqRequest); + + var result = await mqService.SendAsync(mqSettings.TemplateGenerator, new[] { msg }); + + if (result.IsSuccess) + logger.LogInformation($"Отправлен запрос на создание шаблона: {msg}"); + else + logger.LogError($"Ошибка при отправке запроса на создание шаблона: {msg}"); + } + } + + public Task MatchTemplatesForJobGroup(Guid jobGroupId) + { + throw new NotImplementedException(); + } + + public Task MatchTemplatesForTemplate(Guid templateId) + { + throw new NotImplementedException(); + } + + + + } +} diff --git a/PARR.TemplateMatcher/TemplateMatcherInstaller.cs b/PARR.TemplateMatcher/TemplateMatcherInstaller.cs new file mode 100644 index 00000000..941bbee5 --- /dev/null +++ b/PARR.TemplateMatcher/TemplateMatcherInstaller.cs @@ -0,0 +1,39 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using PARR.BLL; +using PARR.DAL; +using PARR.TemplateMatcher.Services.Implemetaions; +using PARR.TemplateMatcher.Services.Interfaces; +using PARR.TemplateMatcher.Settings; + +namespace PARR.TemplateMatcher +{ + public static class TemplateMatcherInstaller + { + public static void InstallTemplateMatcherSerivces(this IServiceCollection services, IConfiguration configuration) + { + services.InstallBllServices(configuration); + services.InstallDalServices(configuration); + + var mqSettings = new MqSettings(); + configuration.GetSection(nameof(MqSettings)).Bind(mqSettings); + services.AddSingleton(mqSettings); + + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + } + + public static IConfigurationBuilder AddTemplateMatcherConfigurations(this IConfigurationBuilder builder, IServiceCollection services) + { + builder.AddDalConfigurations(services); + + return builder; + } + + public static void AddTemplateMatcherSettings(this IServiceCollection services, IConfiguration configuration) + { + services.AddDallSettings(configuration); + } + } +} diff --git a/PARR.TemplateMatcherWorker/PARR.TemplateMatcherWorker.csproj b/PARR.TemplateMatcherWorker/PARR.TemplateMatcherWorker.csproj new file mode 100644 index 00000000..a066311a --- /dev/null +++ b/PARR.TemplateMatcherWorker/PARR.TemplateMatcherWorker.csproj @@ -0,0 +1,22 @@ + + + + net7.0 + enable + enable + dotnet-PARR.TemplateMatcherWorker-5320c017-a02a-449c-9b4a-13adca2c3558 + + + + + + + + + + + + + + + diff --git a/PARR.TemplateMatcherWorker/Program.cs b/PARR.TemplateMatcherWorker/Program.cs new file mode 100644 index 00000000..72de0151 --- /dev/null +++ b/PARR.TemplateMatcherWorker/Program.cs @@ -0,0 +1,31 @@ +using Elastic.CommonSchema.Serilog; +using PARR.TemplateMatcher; +using PARR.TemplateMatcherWorker; +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.InstallTemplateMatcherSerivces(builder.Configuration); +builder.Configuration.AddTemplateMatcherConfigurations(builder.Services); +builder.Services.AddTemplateMatcherSettings(builder.Configuration); + +builder.Services.AddHostedService(); + +var host = builder.Build(); +host.Run(); diff --git a/PARR.TemplateMatcherWorker/Properties/launchSettings.json b/PARR.TemplateMatcherWorker/Properties/launchSettings.json new file mode 100644 index 00000000..4b6f1f77 --- /dev/null +++ b/PARR.TemplateMatcherWorker/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "PARR.TemplateMatcherWorker": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/PARR.TemplateMatcherWorker/Worker.cs b/PARR.TemplateMatcherWorker/Worker.cs new file mode 100644 index 00000000..f64af81f --- /dev/null +++ b/PARR.TemplateMatcherWorker/Worker.cs @@ -0,0 +1,32 @@ +using PARR.TemplateMatcher; + +namespace PARR.TemplateMatcherWorker +{ + public class Worker : BackgroundService + { + private readonly ILogger logger; + private readonly IMqTemplateMatcher mqTemplateTaskGenerator; + + public Worker( + ILogger logger, + IMqTemplateMatcher mqTemplateTaskGenerator + ) + { + logger = logger; + this.mqTemplateTaskGenerator = mqTemplateTaskGenerator; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + await mqTemplateTaskGenerator.StartAsync(); + } + + + public override Task StopAsync(CancellationToken cancellationToken) + { + mqTemplateTaskGenerator.StopAsync().Wait(); + + return base.StopAsync(cancellationToken); + } + } +} diff --git a/PARR.TemplateMatcherWorker/appsettings.Development.json b/PARR.TemplateMatcherWorker/appsettings.Development.json new file mode 100644 index 00000000..665526f1 --- /dev/null +++ b/PARR.TemplateMatcherWorker/appsettings.Development.json @@ -0,0 +1,15 @@ +{ + "Serilog": { + "MinimumLevel": { + "Default": "Debug", + "Override": { + "Microsoft": "Debug", + "Microsoft.Hosting.Lifetime": "Debug" + } + } + }, + "MqSettings": { + "TemplateMatcher": { "HostName": "10.99.253.216" }, + "TemplateGenerator": { "HostName": "10.99.253.216" } + } +} diff --git a/PARR.TemplateMatcherWorker/appsettings.json b/PARR.TemplateMatcherWorker/appsettings.json new file mode 100644 index 00000000..6a9f0599 --- /dev/null +++ b/PARR.TemplateMatcherWorker/appsettings.json @@ -0,0 +1,38 @@ +{ + "ConnectionStrings": { + "DefaultConnection": "Server=10.99.253.184;Database=parr;User Id=app_parr; Password=PosdfkhT&)%sdfligL&%5546;", + "RedisConnection": "parr-redis:6379,password=ParrP@ssPtk202MMdevDvs" + }, + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "log/log-.txt", + "rollingInterval": "Day" + } + } + ] + }, + "MqSettings": { + "TemplateMatcher": { + "HostName": "parr-rabbitmq", + "QueueName": "parr-template-matcher", + "User": "template_matcher_reader", + "Password": "wzqj$Z@3:poasad;lk324@oot" + }, + "TemplateGenerator": { + "HostName": "parr-rabbitmq", + "QueueName": "parr-template-generator", + "User": "template_generator_writer", + "Password": "B;6h+yF$zQ0OSkLX" + } + } +} diff --git a/PARR.TemplateTaskGeneratorWorker/appsettings.json b/PARR.TemplateTaskGeneratorWorker/appsettings.json index 9cb3fdce..e94ac8af 100644 --- a/PARR.TemplateTaskGeneratorWorker/appsettings.json +++ b/PARR.TemplateTaskGeneratorWorker/appsettings.json @@ -11,10 +11,10 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Debug" + "Microsoft.Hosting.Lifetime": "Information" } }, "WriteTo": [