Ejemplo n.º 1
0
 public RabbitMQHealthContributor(RabbitMQProviderConnectorFactory factory, ILogger <RabbitMQHealthContributor> logger = null)
 {
     _factory                = factory;
     _logger                 = logger;
     _connFactory            = _factory.Create(null);
     _createConnectionMethod = ConnectorHelpers.FindMethod(_connFactory.GetType(), "CreateConnection", new Type[0]);
 }
        public HealthCheckResult Health()
        {
            _logger?.LogTrace("Checking RabbitMQ connection health");
            var result = new HealthCheckResult();

            try
            {
                var connFactory            = _factory.Create(null);
                var createConnectionMethod = ConnectorHelpers.FindMethod(connFactory.GetType(), "CreateConnection", new Type[0]);
                var connection             = ConnectorHelpers.Invoke(createConnectionMethod, connFactory, null);

                if (connection == null)
                {
                    throw new ConnectorException("Failed to open RabbitMQ connection!");
                }

                // Spring Boot health checks also include RMQ version the server is running
                result.Details.Add("status", HealthStatus.UP.ToString());
                result.Status = HealthStatus.UP;
                _logger?.LogTrace("RabbitMQ connection up!");
            }
            catch (Exception e)
            {
                if (e is TargetInvocationException)
                {
                    e = e.InnerException;
                }

                _logger?.LogError("RabbitMQ connection down! {HealthCheckException}", e.Message);
                result.Details.Add("error", e.GetType().Name + ": " + e.Message);
                result.Details.Add("status", HealthStatus.DOWN.ToString());
                result.Status      = HealthStatus.DOWN;
                result.Description = e.Message;
            }

            return(result);
        }
Ejemplo n.º 3
0
 public RabbitMQHealthContributor(RabbitMQProviderConnectorFactory factory, ILogger <RabbitMQHealthContributor> logger = null)
 {
     _factory     = factory;
     _logger      = logger;
     _connFactory = _factory.Create(null);
 }