spring 启动执行器运行状况端点 + 动态 resilience4j 断路器
spring boot actuator health endpoint + dynamic resilience4j circuit breakers
我有一个 spring 启动应用程序,它使用 resilience4j AOP-based @CircuitBreaker
s。
现在我想让断路器的信息在 /actuator/health
端点可用,但我在 JSON 中看不到 details.circuitBtreakers
个对象 described in the docs ]输出。
我做错了什么?
相比之下,让动态缓存信息出现在 /actuator/metrics
端点需要少量自定义连接,但这是 well documented。我想知道是否有类似的技巧可以申请动态定义的 @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
目前无法为 HealthIndicator 端点动态注册 CircuitBreakers。
不幸的是你必须配置它们:
resilience4j.circuitbreaker:
configs:
default:
registerHealthIndicator: true
instances:
myCB:
baseConfig: default
你可以说这是一个错误。
我有一个 spring 启动应用程序,它使用 resilience4j AOP-based @CircuitBreaker
s。
现在我想让断路器的信息在 /actuator/health
端点可用,但我在 JSON 中看不到 details.circuitBtreakers
个对象 described in the docs ]输出。
我做错了什么?
相比之下,让动态缓存信息出现在 /actuator/metrics
端点需要少量自定义连接,但这是 well documented。我想知道是否有类似的技巧可以申请动态定义的 @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
目前无法为 HealthIndicator 端点动态注册 CircuitBreakers。 不幸的是你必须配置它们:
resilience4j.circuitbreaker:
configs:
default:
registerHealthIndicator: true
instances:
myCB:
baseConfig: default
你可以说这是一个错误。