66 lines
2.2 KiB
C#
66 lines
2.2 KiB
C#
using PARR.BLL.Contracts.Interfaces;
|
|
using PARR.BLL.Services.Interfaces;
|
|
using PARR.DAL.DomainServices.Interfaces;
|
|
using PARR.DAL.Services.Interfaces;
|
|
using PARR.DAL.Services.Interfaces.Job;
|
|
using PARR.TemplateGeneratorWorker.Services;
|
|
using PARR.TemplateGeneratorWorker.Settings;
|
|
|
|
namespace PARR.TemplateGeneratorWorker
|
|
{
|
|
public class Worker : BackgroundService
|
|
{
|
|
private readonly ILogger<Worker> logger;
|
|
private readonly IMqSettings mqSettings;
|
|
private readonly IMqService mqService;
|
|
private readonly IServiceProvider serviceProvider;
|
|
private readonly ITransformService transformService;
|
|
private readonly IValidatorService validatorService;
|
|
private readonly IJobService jobService;
|
|
private readonly IShortcodesService shortcodesService;
|
|
private readonly ITemplateService templateService;
|
|
|
|
public Worker(
|
|
ILogger<Worker> logger,
|
|
MqSettings mqSettings,
|
|
IMqService mqService,
|
|
IServiceProvider serviceProvider
|
|
)
|
|
{
|
|
this.logger = logger;
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|