resilience4j AOP ベースの sを使用するスプリング ブート アプリがあります@CircuitBreaker
。
/actuator/health
ここで、サーキット ブレーカーの情報をエンドポイントで利用できるようにしたいと考えていますが、ドキュメントに記載されdetails.circuitBtreakers
ているオブジェクトが JSON 出力に表示されません。
私は何を間違っていますか?
比較すると、動的キャッシュ情報を/actuator/metrics
エンドポイントに表示するには、少量のカスタム ワイヤリングが必要でしたが、これは十分に文書化されています. 動的に定義された s をエンドポイント@CircuitBreaker
に登録するために適用できる同様のトリックがあるのだろうか。/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