📄
ScheduleMonitoringChecksJob.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System.Diagnostics; using BfiMonitor; using Microsoft.Extensions.Logging; using Quartz; internal sealed class ScheduleMonitoringChecksJob( MonitoringCheckScheduler scheduler, ScreeningRepository repository, ILogger<ScheduleMonitoringChecksJob> logger ) : IJob { public async Task Execute(IJobExecutionContext context) { using var activity = Tracing.StartCheckerJob(); var monitors = await repository.GetActiveMonitoringsAsync(context.CancellationToken); if (monitors.Count == 0) { logger.LogNoActiveMonitorings(); activity?.SetTag("EndReason", "NoActiveMonitorings"); activity?.SetStatus(ActivityStatusCode.Ok); return; } await scheduler.ScheduleRunningChecksAsync(context.CancellationToken); activity?.SetTag("ScheduledChecks", monitors.Count); activity?.SetTag("EndReason", "RanToCompletion"); activity?.SetStatus(ActivityStatusCode.Ok); } } internal static partial class ScheduleMonitoringChecksJobLoggerExtensions { [LoggerMessage(LogLevel.Information, "No active monitorings configured")] public static partial void LogNoActiveMonitorings(this ILogger logger); }