我在使用resilience4j断路器模块。我可以在抛出异常时破坏电路。没关系。但我也需要检查HttpResponse消息。我找不到如何使用recordResult函数。有人成功地使用了它吗?
public class CircuitBreakerHelper {
public CircuitBreaker createCircuitBreaker() {
// Create a custom configuration for a CircuitBreaker
CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
.failureRateThreshold(50)
.slowCallRateThreshold(50)
.permittedNumberOfCallsInHalfOpenState(3)
.minimumNumberOfCalls(2)
.slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
.slidingWindowSize(2)
.recordExceptions(Exception.class)
//.recordResult(result -> result.equals("etc"))
.build();
CircuitBreakerRegistry circuitBreakerRegistry =
CircuitBreakerRegistry.of(circuitBreakerConfig);
CircuitBreaker circuitBreaker = circuitBreakerRegistry
.circuitBreaker("name");
return circuitBreaker;
}
}发布于 2022-01-18 12:16:42
您可以在下面的响应实体中尝试更改,就像我只使用字符串一样,您可以使用任何类型或参数化类型。
Supplier<ResponseEntity<String>> decoratedSupplier = CircuitBreaker
.decorateSupplier(circuitBreaker, this::getStringResponseEntity);
ResponseEntity<String> result = Try.ofSupplier(decoratedSupplier).get();
private ResponseEntity<String> getStringResponseEntity() {
ResponseEntity<String> responseEntity= restTemplate.postForEntity("PROTOCOL://HOST:PORT/API CALL",null,String.class, (Object) null);
return responseEntity;
}https://stackoverflow.com/questions/70609265
复制相似问题