Files
pfm/PostFundManagement.Domain/Health/QuartzHealthCheck.cs
T
hermes ab2ef9da31 Added healthchecks
Configured scheduler schema
Added dataprotection support
2026-08-21 11:19:06 +02:00

28 lines
1.1 KiB
C#

using static PostFundManagement.Domain.Extensions.Constants;
namespace PostFundManagement.Domain.Health;
public sealed class QuartzHealthCheck(ISchedulerFactory schedulerFactory) : IHealthCheck
{
public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
{
try
{
var scheduler = await schedulerFactory.GetScheduler(DefaultSchedulerName, cancellationToken);
if(scheduler == null)
return HealthCheckResult.Unhealthy($"Scheduler with name '{DefaultSchedulerName}' not found.");
if (!scheduler.IsStarted)
return HealthCheckResult.Unhealthy($"{DefaultSchedulerName} Quartz scheduler is not running");
await scheduler.CheckExists(new JobKey(Guid.NewGuid().ToString()), cancellationToken);
return HealthCheckResult.Healthy($"{DefaultSchedulerName} Quartz scheduler is ready");
}
catch (SchedulerException)
{
return HealthCheckResult.Unhealthy($"{DefaultSchedulerName} Quartz scheduler cannot connect to the store");
}
}
}