running ActivePassiveHostedService in singletone mode as default
This commit is contained in:
parent
83fdaf0753
commit
070475af5b
@ -32,7 +32,8 @@ namespace ASC.Core.Common.Hosting;
|
||||
public class RegisterInstanceManager<T> : IRegisterInstanceManager<T> where T : IHostedService
|
||||
{
|
||||
private readonly IRegisterInstanceDao<T> _registerInstanceRepository;
|
||||
private readonly int _timeUntilUnregisterInSeconds;
|
||||
private readonly int _timeUntilUnregisterInSeconds;
|
||||
private readonly bool _isSingletoneMode;
|
||||
public RegisterInstanceManager(IRegisterInstanceDao<T> registerInstanceRepository,
|
||||
IConfiguration configuration)
|
||||
{
|
||||
@ -41,10 +42,18 @@ public class RegisterInstanceManager<T> : IRegisterInstanceManager<T> where T :
|
||||
if (!int.TryParse(configuration["core:hosting:timeUntilUnregisterInSeconds"], out _timeUntilUnregisterInSeconds))
|
||||
{
|
||||
_timeUntilUnregisterInSeconds = 15;
|
||||
}
|
||||
|
||||
if (!bool.TryParse(configuration["core:hosting:singletonMode"], out _isSingletoneMode))
|
||||
{
|
||||
_isSingletoneMode = true;
|
||||
}
|
||||
|
||||
}
|
||||
public async Task Register(string instanceId)
|
||||
{
|
||||
{
|
||||
if (_isSingletoneMode) return;
|
||||
|
||||
var instances = await _registerInstanceRepository.GetAll();
|
||||
var registeredInstance = instances.FirstOrDefault(x => x.InstanceRegistrationId == instanceId);
|
||||
|
||||
@ -75,7 +84,9 @@ public class RegisterInstanceManager<T> : IRegisterInstanceManager<T> where T :
|
||||
}
|
||||
|
||||
public async Task<bool> IsActive(string instanceId)
|
||||
{
|
||||
{
|
||||
if (_isSingletoneMode) return await Task.FromResult(true);
|
||||
|
||||
var instances = await _registerInstanceRepository.GetAll();
|
||||
var instance = instances.FirstOrDefault(x => x.InstanceRegistrationId == instanceId);
|
||||
|
||||
@ -83,7 +94,9 @@ public class RegisterInstanceManager<T> : IRegisterInstanceManager<T> where T :
|
||||
}
|
||||
|
||||
public async Task<List<string>> DeleteOrphanInstances()
|
||||
{
|
||||
{
|
||||
if (_isSingletoneMode) return await Task.FromResult(new List<string>());
|
||||
|
||||
var instances = await _registerInstanceRepository.GetAll();
|
||||
var oldRegistrations = instances.Where(IsOrphanInstance).ToList();
|
||||
|
||||
|
@ -34,8 +34,9 @@ public class RegisterInstanceWorkerService<T> : BackgroundService where T : IHos
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly int _intervalCheckRegisterInstanceInSeconds;
|
||||
public static readonly string InstanceId =
|
||||
$"{typeof(T).GetFormattedName()}_{DateTime.UtcNow.Ticks}";
|
||||
|
||||
$"{typeof(T).GetFormattedName()}_{DateTime.UtcNow.Ticks}";
|
||||
private readonly bool _isSingletoneMode;
|
||||
|
||||
public RegisterInstanceWorkerService(
|
||||
ILogger<RegisterInstanceWorkerService<T>> logger,
|
||||
IServiceProvider serviceProvider,
|
||||
@ -51,11 +52,24 @@ public class RegisterInstanceWorkerService<T> : BackgroundService where T : IHos
|
||||
_intervalCheckRegisterInstanceInSeconds = 1;
|
||||
}
|
||||
|
||||
_intervalCheckRegisterInstanceInSeconds = _intervalCheckRegisterInstanceInSeconds*1000;
|
||||
if (!bool.TryParse(configuration["core:hosting:singletonMode"], out _isSingletoneMode))
|
||||
{
|
||||
_isSingletoneMode = true;
|
||||
}
|
||||
|
||||
|
||||
_intervalCheckRegisterInstanceInSeconds = _intervalCheckRegisterInstanceInSeconds * 1000;
|
||||
}
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
if (_isSingletoneMode)
|
||||
{
|
||||
_logger.InformationWorkerSingletone();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
while (!stoppingToken.IsCancellationRequested)
|
||||
{
|
||||
try
|
||||
|
@ -34,6 +34,9 @@ internal static partial class RegisterInstanceWorkerServiceLogger
|
||||
[LoggerMessage(Level = LogLevel.Trace, Message = "Worker running at: {time}")]
|
||||
public static partial void TraceWorkingRunnging(this ILogger logger, DateTimeOffset time);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Information, Message = "Instance Worker running in singletone mode")]
|
||||
public static partial void InformationWorkerSingletone(this ILogger logger);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Information, Message = "UnRegister Instance {instanceName} running at: {time}.")]
|
||||
public static partial void InformationUnRegister(this ILogger logger, string instanceName, DateTimeOffset time);
|
||||
|
||||
|
@ -36,9 +36,10 @@
|
||||
"search-by-content": false,
|
||||
"hosting": {
|
||||
"intervalCheckRegisterInstanceInSeconds": "1",
|
||||
"timeUntilUnregisterInSeconds": "15"
|
||||
"timeUntilUnregisterInSeconds": "15",
|
||||
"singletonMode": true
|
||||
},
|
||||
"themelimit": "9",
|
||||
"themelimit": "9",
|
||||
"oidc": {
|
||||
"authority" : ""
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user