feat(nextRunWorker): добавлен еще один backgroundWorker, который смотрит очередь, и пересчитывает nextRun для jobGroupId
This commit is contained in:
22
PARR.NextRunWorker/IntervalWorker.cs
Normal file
22
PARR.NextRunWorker/IntervalWorker.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using PARR.NextRun;
|
||||
|
||||
namespace PARR.NextRunWorker
|
||||
{
|
||||
public class IntervalWorker : BackgroundService
|
||||
{
|
||||
private readonly INextRunIntervalService nextRunIntervalService;
|
||||
private readonly ILogger<IntervalWorker> logger;
|
||||
|
||||
public IntervalWorker(INextRunIntervalService nextRunIntervalService, ILogger<IntervalWorker> logger)
|
||||
{
|
||||
this.nextRunIntervalService = nextRunIntervalService;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
logger.LogInformation("Запуск {workerName}", nameof(IntervalWorker));
|
||||
await nextRunIntervalService.StartAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,25 @@ builder.Services.InstallNextRunServices(builder.Configuration);
|
||||
builder.Configuration.AddNextRunConfigurations(builder.Services);
|
||||
builder.Services.AddNextRunSettings(builder.Configuration);
|
||||
|
||||
builder.Services.AddHostedService<Worker>();
|
||||
// Задается через переменные окружеия
|
||||
var runRabbit = builder.Configuration.GetValue<bool>("ENABLE_RABBIT", true);
|
||||
var runInterval = builder.Configuration.GetValue<bool>("ENABLE_INTERVAL", true);
|
||||
|
||||
if (runRabbit)
|
||||
{
|
||||
builder.Services.AddHostedService<RabbitWorker>();
|
||||
}
|
||||
|
||||
if (runInterval)
|
||||
{
|
||||
builder.Services.AddHostedService<IntervalWorker>();
|
||||
}
|
||||
|
||||
// Настройка краша при ошибке. Если хоть один из воркеров упадет, то падает целиком проект
|
||||
builder.Services.Configure<HostOptions>(options =>
|
||||
{
|
||||
options.BackgroundServiceExceptionBehavior = BackgroundServiceExceptionBehavior.StopHost;
|
||||
});
|
||||
|
||||
var host = builder.Build();
|
||||
host.Run();
|
||||
|
||||
28
PARR.NextRunWorker/RabbitWorker.cs
Normal file
28
PARR.NextRunWorker/RabbitWorker.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using PARR.NextRun;
|
||||
|
||||
namespace PARR.NextRunWorker
|
||||
{
|
||||
public class RabbitWorker : BackgroundService
|
||||
{
|
||||
private readonly INextRunRabbitService nextRunRabbitService;
|
||||
private readonly ILogger<RabbitWorker> logger;
|
||||
|
||||
public RabbitWorker(INextRunRabbitService nextRunRabbitService, ILogger<RabbitWorker> logger)
|
||||
{
|
||||
this.nextRunRabbitService = nextRunRabbitService;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
logger.LogInformation("Запуск {workerName}", nameof(RabbitWorker));
|
||||
await nextRunRabbitService.StopAsync();
|
||||
}
|
||||
|
||||
public override Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
nextRunRabbitService.StopAsync().Wait();
|
||||
return base.StopAsync(cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
using PARR.NextRun;
|
||||
|
||||
namespace PARR.NextRunWorker
|
||||
{
|
||||
public class Worker : BackgroundService
|
||||
{
|
||||
private readonly INextRunManager nextRunManager;
|
||||
|
||||
public Worker(INextRunManager nextRunManager)
|
||||
{
|
||||
this.nextRunManager = nextRunManager;
|
||||
}
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
await nextRunManager.StartAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,5 +25,10 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"WorkerSettings": {
|
||||
"MqSettings": {
|
||||
"HostName": "10.99.253.216"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"WorkerSettings": {
|
||||
"RepeatEvery": "0:50:00"
|
||||
"WorkerSettings": {
|
||||
"RepeatEvery": "0:50:00",
|
||||
"MqSettings": {
|
||||
"HostName": "parr-rabbitmq",
|
||||
"QueueName": "parr-next-run-updater",
|
||||
"User": "next_run_updater_reader",
|
||||
"Password": "LJFgsifgFidfsdvi123#!23",
|
||||
"PrefetchCount": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user