Merge pull request #1156 from visagang/features/vguruparan

Update distributed lock for cronservice
This commit is contained in:
Haiping 2025-09-09 13:16:10 -05:00 committed by GitHub
commit 7a301dc9e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 2 deletions

View file

@ -4,6 +4,7 @@ public class CrontabSettings
{ {
public CrontabBaseSetting EventSubscriber { get; set; } = new(); public CrontabBaseSetting EventSubscriber { get; set; } = new();
public CrontabBaseSetting Watcher { get; set; } = new(); public CrontabBaseSetting Watcher { get; set; } = new();
public string LockName { get; set; } = "CrontabWatcher:locker";
} }
public class CrontabBaseSetting public class CrontabBaseSetting

View file

@ -10,11 +10,15 @@ public class CrontabWatcher : BackgroundService
{ {
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IServiceProvider _services; private readonly IServiceProvider _services;
private readonly CrontabSettings _cronSettings;
private string DIST_KEY;
public CrontabWatcher(IServiceProvider services, ILogger<CrontabWatcher> logger) public CrontabWatcher(IServiceProvider services, ILogger<CrontabWatcher> logger, CrontabSettings cronSettings)
{ {
_logger = logger; _logger = logger;
_services = services; _services = services;
_cronSettings = cronSettings;
DIST_KEY = _cronSettings.LockName;
} }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) protected override async Task ExecuteAsync(CancellationToken stoppingToken)
@ -29,7 +33,7 @@ public class CrontabWatcher : BackgroundService
{ {
var delay = Task.Delay(1000, stoppingToken); var delay = Task.Delay(1000, stoppingToken);
await locker.LockAsync("CrontabWatcher:locker", async () => await locker.LockAsync(DIST_KEY, async () =>
{ {
await RunCronChecker(scope.ServiceProvider); await RunCronChecker(scope.ServiceProvider);
}); });