namespace PostFundManagement.Domain.Health; public sealed class QuartzHealthCheck(ISchedulerFactory schedulerFactory) : IHealthCheck { public async Task CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default) { try { var scheduler = await schedulerFactory.GetScheduler(cancellationToken); if (scheduler == null) return HealthCheckResult.Unhealthy($"Scheduler with name '{DefaultSchedulerName}' not found."); if (scheduler.Status != SchedulerStatus.Running) return HealthCheckResult.Unhealthy($"{DefaultSchedulerName} Quartz scheduler is not running"); await scheduler.Exists(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"); } } }