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
{
bool InitConsumer(IMqSettings mqSettings, MqMessageHandlerDelegate test);
bool InitConsumer(IMqSettings mqSettings, MqMessageHandlerDelegate messageHandler);
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" />
</ItemGroup>
<ItemGroup>
<Folder Include="Services\" />
</ItemGroup>
</Project>

View File

@@ -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<IEsppApiService, EsppApiService>();
services.AddTransient<IEsppOrderManager, EsppOrderManager>();
}
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
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private readonly IEsppOrderManager esppOrderManager;
public Worker(ILogger<Worker> logger)
public Worker(ILogger<Worker> 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);
}
}
}

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"
}
}