Files
vigilcare-clinical/VigilCare.WardGateway/Infrastructure/RabbitMqHealthCheck.cs
T

27 lines
946 B
C#

using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Options;
using RabbitMQ.Client;
public sealed class RabbitMqHealthCheck : IHealthCheck
{
private readonly RabbitMqOptions _options;
public RabbitMqHealthCheck(IOptions<RabbitMqOptions> options) => _options = options.Value;
public async Task<HealthCheckResult> CheckHealthAsync(
HealthCheckContext context, CancellationToken cancellationToken = default)
{
var factory = new ConnectionFactory
{
HostName = _options.Host,
Port = _options.Port,
UserName = _options.Username,
Password = _options.Password
};
using var connection = await Task.Run(() => factory.CreateConnection(), cancellationToken);
var data = new Dictionary<string, object> { ["endpoint"] = connection.Endpoint.ToString() };
return HealthCheckResult.Healthy(data: data);
}
}