diff --git a/PARR.BLL/Services/Interfaces/IMqService.cs b/PARR.BLL/Services/Interfaces/IMqService.cs index 14b8250e..d96bfb32 100644 --- a/PARR.BLL/Services/Interfaces/IMqService.cs +++ b/PARR.BLL/Services/Interfaces/IMqService.cs @@ -7,7 +7,7 @@ namespace PARR.BLL.Services.Interfaces public interface IMqService : IDisposable { - bool InitConsumer(IMqSettings mqSettings, MqMessageHandlerDelegate test); + bool InitConsumer(IMqSettings mqSettings, MqMessageHandlerDelegate messageHandler); MqSendResult Send(IMqSettings mqSettings, string[] msgList); } } diff --git a/PARR.EsppOrderManager/EsppOrderManager.cs b/PARR.EsppOrderManager/EsppOrderManager.cs new file mode 100644 index 00000000..5584e259 --- /dev/null +++ b/PARR.EsppOrderManager/EsppOrderManager.cs @@ -0,0 +1,47 @@ +using Microsoft.Extensions.Logging; +using PARR.BLL.Services.Interfaces; +using PARR.EsppOrderManager.Settings; + +namespace PARR.EsppOrderManager +{ + internal class EsppOrderManager : IEsppOrderManager + { + private readonly MqSettings mqSettings; + private readonly IMqService mqService; + private readonly ILogger logger; + + public EsppOrderManager( + MqSettings mqSettings, + IMqService mqService, + ILogger logger + ) + { + this.mqSettings = mqSettings; + this.mqService = mqService; + this.logger = logger; + } + + public void Start() + { + var isConnected = mqService.InitConsumer(mqSettings, ManageOrder); + + if (!isConnected) + throw new Exception("Ошибка при подключении к RabbitMq"); + } + + public void Stop() + { + mqService.Dispose(); + } + + + private async Task ManageOrder(string msg) + { + logger.LogDebug($"Получили сообщение: {msg}"); + + //тут по идее берет в работу / выполняет + + //todo: + } + } +} diff --git a/PARR.EsppOrderManager/IEsppOrderManager.cs b/PARR.EsppOrderManager/IEsppOrderManager.cs new file mode 100644 index 00000000..bb4a1f5a --- /dev/null +++ b/PARR.EsppOrderManager/IEsppOrderManager.cs @@ -0,0 +1,8 @@ +namespace PARR.EsppOrderManager +{ + public interface IEsppOrderManager + { + void Start(); + void Stop(); + } +} diff --git a/PARR.EsppOrderManager/PARR.EsppOrderManager.csproj b/PARR.EsppOrderManager/PARR.EsppOrderManager.csproj index 74361878..226873a9 100644 --- a/PARR.EsppOrderManager/PARR.EsppOrderManager.csproj +++ b/PARR.EsppOrderManager/PARR.EsppOrderManager.csproj @@ -12,4 +12,8 @@ + + + + diff --git a/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs b/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs index e372403c..a483dea8 100644 --- a/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs +++ b/PARR.EsppOrderManager/ParrEsppOrderManagerInstaller.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using PARR.BLL; using PARR.DAL; using PARR.EsppApi; +using PARR.EsppOrderManager.Settings; namespace PARR.EsppOrderManager { @@ -14,14 +15,11 @@ namespace PARR.EsppOrderManager services.InstallDalServices(configuration); services.InstallEsppApiServices(configuration); - // settings - //SettingsFromDb configuration - //var settingsFromDb = new SettingsFromDb(); - //configuration.GetSection(nameof(SettingsFromDb)).Bind(settingsFromDb); - //services.AddSingleton(settingsFromDb); + var mqSettings = new MqSettings(); + configuration.GetSection(nameof(MqSettings)).Bind(mqSettings); + services.AddSingleton(mqSettings); - //add other services - //services.AddTransient(); + services.AddTransient(); } public static IConfigurationBuilder AddEsppOrderManagerConfigurations(this IConfigurationBuilder builder, IServiceCollection services) diff --git a/PARR.EsppOrderManager/Settings/MqSettings.cs b/PARR.EsppOrderManager/Settings/MqSettings.cs new file mode 100644 index 00000000..abb27739 --- /dev/null +++ b/PARR.EsppOrderManager/Settings/MqSettings.cs @@ -0,0 +1,12 @@ +using PARR.BLL.Contracts.Interfaces; + +namespace PARR.EsppOrderManager.Settings +{ + internal class MqSettings : 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.EsppOrderManagerWorker/Worker.cs b/PARR.EsppOrderManagerWorker/Worker.cs index 50c29b5e..aa43fd05 100644 --- a/PARR.EsppOrderManagerWorker/Worker.cs +++ b/PARR.EsppOrderManagerWorker/Worker.cs @@ -1,23 +1,28 @@ +using PARR.EsppOrderManager; + namespace PARR.EsppOrderManagerWorker { public class Worker : BackgroundService { private readonly ILogger _logger; + private readonly IEsppOrderManager esppOrderManager; - public Worker(ILogger logger) + public Worker(ILogger logger, IEsppOrderManager esppOrderManager) { _logger = logger; + this.esppOrderManager = esppOrderManager; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { - _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + esppOrderManager.Start(); + } - //while (!stoppingToken.IsCancellationRequested) - //{ - // _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); - // await Task.Delay(1000, stoppingToken); - //} + public override Task StopAsync(CancellationToken cancellationToken) + { + esppOrderManager.Stop(); + + return base.StopAsync(cancellationToken); } } } \ No newline at end of file diff --git a/PARR.EsppOrderManagerWorker/appsettings.json b/PARR.EsppOrderManagerWorker/appsettings.json index 96a98cc3..2b3068b4 100644 --- a/PARR.EsppOrderManagerWorker/appsettings.json +++ b/PARR.EsppOrderManagerWorker/appsettings.json @@ -25,5 +25,11 @@ } } ] + }, + "MqSettings": { + "HostName": "parr-rabbitmq", + "QueueName": "parr-orders", + "User": "espp_orders_manager", + "Password": "Lfhsdkfg*&%9sdfgf23" } } diff --git a/PARR.MasterWorker/appsettings.json b/PARR.MasterWorker/appsettings.json index 96a98cc3..b6b73e42 100644 --- a/PARR.MasterWorker/appsettings.json +++ b/PARR.MasterWorker/appsettings.json @@ -25,5 +25,11 @@ } } ] + }, + "MqSettings": { + "HostName": "parr-rabbitmq", + "QueueName": "parr-orders", + "User": "espp_orders_master", + "Password": "Fjhgsdf*^%9sdfsd2" } }