DocSpace-client/common/services/ASC.Feed.Aggregator/Service/FeedCleanerService.cs

64 lines
1.8 KiB
C#
Raw Normal View History

namespace ASC.Feed.Aggregator.Service
{
public class FeedCleanerService : FeedBaseService
{
2022-02-11 13:57:42 +00:00
protected override string LoggerName { get; set; } = "ASC.Feed.Cleaner";
public FeedCleanerService(
FeedSettings feedSettings,
IServiceProvider serviceProvider,
IOptionsMonitor<ILog> optionsMonitor)
: base(feedSettings, serviceProvider, optionsMonitor)
{
}
public override Task StartAsync(CancellationToken cancellationToken)
{
Logger.Info("Feed Cleaner Service running.");
var cfg = FeedSettings;
IsStopped = false;
Timer = new Timer(RemoveFeeds, cfg.AggregateInterval, cfg.RemovePeriod, cfg.RemovePeriod);
return Task.CompletedTask;
}
public override Task StopAsync(CancellationToken cancellationToken)
{
Logger.Info("Feed Cleaner Service stopping.");
IsStopped = true;
Timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
private void RemoveFeeds(object interval)
{
if (!Monitor.TryEnter(LockObj))
{
return;
}
try
{
using var scope = ServiceProvider.CreateScope();
var feedAggregateDataProvider = scope.ServiceProvider.GetService<FeedAggregateDataProvider>();
Logger.DebugFormat("Start of removing old news");
feedAggregateDataProvider.RemoveFeedAggregate(DateTime.UtcNow.Subtract((TimeSpan)interval));
}
catch (Exception ex)
{
Logger.Error(ex);
}
finally
{
Monitor.Exit(LockObj);
}
}
}
2022-02-11 14:59:18 +00:00
}