Files
parr_api/PARR.TemplateGeneratorWorker/Worker.cs
2025-08-20 15:25:26 +10:00

54 lines
1.6 KiB
C#

using PARR.BLL.Services.Interfaces;
using PARR.TemplateGeneratorWorker.Settings;
namespace PARR.TemplateGeneratorWorker
{
public class Worker : BackgroundService
{
private readonly MqSettings mqSettings;
private readonly IMqService mqService;
private readonly IServiceProvider serviceProvider;
public Worker(
MqSettings mqSettings,
IMqService mqService,
IServiceProvider serviceProvider
)
{
this.mqSettings = mqSettings;
this.mqService = mqService;
this.serviceProvider = serviceProvider;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var isConnected = await mqService.InitConsumerAsync(mqSettings, GenerateTemplateAsync);
if (!isConnected)
throw new Exception("Îøèáêà ïðè ïîäêëþ÷åíèè ê RabbitMq");
}
public override Task StopAsync(CancellationToken cancellationToken)
{
mqService.DisposeAsync().AsTask().Wait();
return base.StopAsync(cancellationToken);
}
private async Task GenerateTemplateAsync(string msg)
{
using (var scope = serviceProvider.CreateScope())
{
var templateGenerator = scope.ServiceProvider.GetService<ITemplateGenerator>();
if (templateGenerator == null)
throw new Exception($"Íå íàéäåí ñåðâèñ: {nameof(ITemplateGenerator)}");
await templateGenerator.GenerateTemplateAsync(msg);
}
}
}
}