2026-04-14 16:27:27 +10:00
|
|
|
|
using PARR.Core.Common.Interfaces.RabbitServices;
|
2025-08-14 15:20:04 +10:00
|
|
|
|
using PARR.TemplateGeneratorWorker.Settings;
|
|
|
|
|
|
|
|
|
|
|
|
namespace PARR.TemplateGeneratorWorker
|
|
|
|
|
|
{
|
|
|
|
|
|
public class Worker : BackgroundService
|
|
|
|
|
|
{
|
2025-08-20 15:25:26 +10:00
|
|
|
|
|
|
|
|
|
|
private readonly MqSettings mqSettings;
|
2026-04-14 12:01:49 +10:00
|
|
|
|
private readonly IRabbitService mqService;
|
2025-08-19 11:13:56 +10:00
|
|
|
|
private readonly IServiceProvider serviceProvider;
|
2025-08-14 15:20:04 +10:00
|
|
|
|
|
|
|
|
|
|
public Worker(
|
|
|
|
|
|
MqSettings mqSettings,
|
2026-04-14 12:01:49 +10:00
|
|
|
|
IRabbitService mqService,
|
2025-08-14 15:20:04 +10:00
|
|
|
|
IServiceProvider serviceProvider
|
|
|
|
|
|
)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.mqSettings = mqSettings;
|
|
|
|
|
|
this.mqService = mqService;
|
|
|
|
|
|
this.serviceProvider = serviceProvider;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
|
|
|
|
{
|
2025-08-20 15:25:26 +10:00
|
|
|
|
var isConnected = await mqService.InitConsumerAsync(mqSettings, GenerateTemplateAsync);
|
2025-08-14 15:20:04 +10:00
|
|
|
|
|
2025-08-20 15:25:26 +10:00
|
|
|
|
if (!isConnected)
|
|
|
|
|
|
throw new Exception("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> RabbitMq");
|
2025-08-14 15:20:04 +10:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public override Task StopAsync(CancellationToken cancellationToken)
|
|
|
|
|
|
{
|
2025-08-20 14:10:22 +10:00
|
|
|
|
mqService.DisposeAsync().AsTask().Wait();
|
2025-08-14 15:20:04 +10:00
|
|
|
|
|
|
|
|
|
|
return base.StopAsync(cancellationToken);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private async Task GenerateTemplateAsync(string msg)
|
|
|
|
|
|
{
|
|
|
|
|
|
using (var scope = serviceProvider.CreateScope())
|
|
|
|
|
|
{
|
2025-08-19 11:13:56 +10:00
|
|
|
|
var templateGenerator = scope.ServiceProvider.GetService<ITemplateGenerator>();
|
|
|
|
|
|
if (templateGenerator == null)
|
|
|
|
|
|
throw new Exception($"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: {nameof(ITemplateGenerator)}");
|
|
|
|
|
|
await templateGenerator.GenerateTemplateAsync(msg);
|
2025-08-14 15:20:04 +10:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-08-19 11:13:56 +10:00
|
|
|
|
|