конечная точка исправности исполнительного механизма пружинного чехла + автоматические выключатели Dynami c resilience4j - PullRequest
2 голосов
/ 04 марта 2020

У меня есть приложение с пружинной загрузкой, которое использует resilience4j на основе AOP @CircuitBreaker с.

Теперь я хотел бы получить информацию о выключателях доступны в конечной точке /actuator/health, но я не вижу details.circuitBtreakers объектов , описанных в документах , в выводе JSON.

Что я делаю неправильно?


Для сравнения, для получения динамической c информации кеша для отображения в конечной точке /actuator/metrics требовалось небольшое количество пользовательских подключений, но это хорошо документировано . Интересно, есть ли подобная уловка, которую я могу применить для динамически определенных @CircuitBreaker s, которые будут зарегистрированы в конечной точке /actuator/health.

MyService.java:

@Service
public class MyService {
    @Autowired
    private CacheManager cacheManager;
    @Autowired
    private CacheMetricsRegistrar cacheMetricsRegistrar;

    @PostConstruct
    public void postConstruct() {
        // On-the-fly defined (annotation-based) caches are not auto-registered with micrometer metrics.
        final Cache cache = cacheManager.getCache("myCache");
        cacheMetricsRegistrar.bindCacheToRegistry(cache);
    }

    @CircuitBreaker(name = "myCB", fallbackMethod = "fallbackCallAnApi")
    public String callAnApi() throws RestClientException {
        // ...
    }

    @Cacheable("myCache")
    public String getSomethingCacheable() {
        // ...
    }
}

application.properties:

resilience4j.circuitbreaker.configs.default.registerHealthIndicator=true
management.endpoints.web.expose=health,metrics
management.endpoints.web.exposure.include=health,metrics
management.endpoint.health.enabled=true
management.endpoint.metrics.enabled=true
management.metrics.enable.resilience4j.circuitbreaker.calls=true
management.health.circuitbreakers.enabled=true

1 Ответ

0 голосов
/ 05 марта 2020

Динамическая регистрация CircuitBreakers для конечной точки HealthIndicator в данный момент не работает. К сожалению, вы должны настроить их:

resilience4j.circuitbreaker:
    configs:
        default:
            registerHealthIndicator: true
    instances:
        myCB:
            baseConfig: default

Можно сказать, что это ошибка.

https://github.com/resilience4j/resilience4j/blob/master/resilience4j-spring-boot2/src/main/java/io/github/resilience4j/circuitbreaker/monitoring/health/CircuitBreakersHealthIndicator.java#L99 -L102

...