Resilience4j и Spring Actuator - Сервис по уничтожению разомкнутой цепи - PullRequest
3 голосов
/ 23 апреля 2019

Я добавил следующую зависимость в свой проект Spring Boot

implementation 'io.github.resilience4j:resilience4j-spring-boot2:0.14.1'

Когда размыкается автоматический выключатель, я получаю следующий ответ на мою конечную точку привода / работоспособности с кодом состояния 503 Сервис недоступен:

{
"status": "DOWN",
"details": {
    "diskSpace": {
        "status": "UP",
        "details": {
            "total": 499963174912,
            "free": 432263229440,
            "threshold": 10485760
        }
    },
    "refreshScope": {
        "status": "UP"
    },
    "getFlightInfoCircuitBreaker": {
        "status": "DOWN",
        "details": {
            "failureRate": "100.0%",
            "failureRateThreshold": "2.0%",
            "maxBufferedCalls": 1,
            "bufferedCalls": 1,
            "failedCalls": 1,
            "notPermittedCalls": 1,
            "state": "OPEN"
        }
    }
}

}

Моя проверка работоспособности контейнера AWS ECS использует эту конечную точку для определения ее работоспособности и перезапускает контейнер при ответе, отличном от 200.

Поскольку я не хочу, чтобы моя служба перезапускалась при размыкании автоматического выключателя, есть ли способ, чтобы автоматический выключатель был разомкнут, не вызывая при этом состояние службы?

Мне известно о свойстве registerHealthIndicator: false, чтобы обойти эту проблему, но это удаляет статистику выключателя из привода, которую я все еще хотел бы увидеть.

Ответы [ 3 ]

0 голосов
/ 07 мая 2019

Нет, вам просто нужно правильно настроить Spring Boot2.

management.health.status.http-mapping.DOWN=200

0 голосов
/ 07 мая 2019

Вам просто нужно настроить Spring Boot2 следующим образом:

management.health.status.http-mapping.DOWN=200

0 голосов
/ 28 апреля 2019

Я могу придумать две возможности.

1) Создайте пользовательский HealthIndicator на основе кода resilience4j: https://github.com/resilience4j/resilience4j/blob/master/resilience4j-spring-boot2/src/main/java/io/github/resilience4j/circuitbreaker/monitoring/health/CircuitBreakerHealthIndicator.java

Вам нужно будет вернуть Health.up() или Health.unknown(), чтобы избежать 503 от конечной точки /health.

2) Отключите индикатор работоспособности resilience4j и получите ту же информацию из конечной точки привода метрики.

...