feat(esppOrderManager): получение сообщений из Rabbit.

This commit is contained in:
Mikhail Trubnikov
2023-10-24 11:29:55 +10:00
parent 50e165bdc3
commit 7991121f07
9 changed files with 101 additions and 15 deletions

View File

@@ -7,7 +7,7 @@ namespace PARR.BLL.Services.Interfaces
public interface IMqService : IDisposable public interface IMqService : IDisposable
{ {
bool InitConsumer(IMqSettings mqSettings, MqMessageHandlerDelegate test); bool InitConsumer(IMqSettings mqSettings, MqMessageHandlerDelegate messageHandler);
MqSendResult Send(IMqSettings mqSettings, string[] msgList); MqSendResult Send(IMqSettings mqSettings, string[] msgList);
} }
} }

View File

@@ -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<EsppOrderManager> logger;
public EsppOrderManager(
MqSettings mqSettings,
IMqService mqService,
ILogger<EsppOrderManager> 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:
}
}
}

View File

@@ -0,0 +1,8 @@
namespace PARR.EsppOrderManager
{
public interface IEsppOrderManager
{
void Start();
void Stop();
}
}

View File

@@ -12,4 +12,8 @@
<ProjectReference Include="..\PARR.EsppApi\PARR.EsppApi.csproj" /> <ProjectReference Include="..\PARR.EsppApi\PARR.EsppApi.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Services\" />
</ItemGroup>
</Project> </Project>

View File

@@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection;
using PARR.BLL; using PARR.BLL;
using PARR.DAL; using PARR.DAL;
using PARR.EsppApi; using PARR.EsppApi;
using PARR.EsppOrderManager.Settings;
namespace PARR.EsppOrderManager namespace PARR.EsppOrderManager
{ {
@@ -14,14 +15,11 @@ namespace PARR.EsppOrderManager
services.InstallDalServices(configuration); services.InstallDalServices(configuration);
services.InstallEsppApiServices(configuration); services.InstallEsppApiServices(configuration);
// settings var mqSettings = new MqSettings();
//SettingsFromDb configuration configuration.GetSection(nameof(MqSettings)).Bind(mqSettings);
//var settingsFromDb = new SettingsFromDb(); services.AddSingleton(mqSettings);
//configuration.GetSection(nameof(SettingsFromDb)).Bind(settingsFromDb);
//services.AddSingleton(settingsFromDb);
//add other services services.AddTransient<IEsppOrderManager, EsppOrderManager>();
//services.AddTransient<IEsppApiService, EsppApiService>();
} }
public static IConfigurationBuilder AddEsppOrderManagerConfigurations(this IConfigurationBuilder builder, IServiceCollection services) public static IConfigurationBuilder AddEsppOrderManagerConfigurations(this IConfigurationBuilder builder, IServiceCollection services)

View File

@@ -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;
}
}

View File

@@ -1,23 +1,28 @@
using PARR.EsppOrderManager;
namespace PARR.EsppOrderManagerWorker namespace PARR.EsppOrderManagerWorker
{ {
public class Worker : BackgroundService public class Worker : BackgroundService
{ {
private readonly ILogger<Worker> _logger; private readonly ILogger<Worker> _logger;
private readonly IEsppOrderManager esppOrderManager;
public Worker(ILogger<Worker> logger) public Worker(ILogger<Worker> logger, IEsppOrderManager esppOrderManager)
{ {
_logger = logger; _logger = logger;
this.esppOrderManager = esppOrderManager;
} }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{ {
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); esppOrderManager.Start();
}
//while (!stoppingToken.IsCancellationRequested) public override Task StopAsync(CancellationToken cancellationToken)
//{ {
// _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); esppOrderManager.Stop();
// await Task.Delay(1000, stoppingToken);
//} return base.StopAsync(cancellationToken);
} }
} }
} }

View File

@@ -25,5 +25,11 @@
} }
} }
] ]
},
"MqSettings": {
"HostName": "parr-rabbitmq",
"QueueName": "parr-orders",
"User": "espp_orders_manager",
"Password": "Lfhsdkfg*&%9sdfgf23"
} }
} }

View File

@@ -25,5 +25,11 @@
} }
} }
] ]
},
"MqSettings": {
"HostName": "parr-rabbitmq",
"QueueName": "parr-orders",
"User": "espp_orders_master",
"Password": "Fjhgsdf*^%9sdfsd2"
} }
} }