我正在尝试在我的项目中添加一个弹性 4j 断路器。为此,如果调用失败并重试,我有一个自定义机制。如何更改这两个的执行顺序?有没有一种方法可以让我先执行我的自定义机制,如果也失败了,然后重试?
问问题
69 次
1 回答
0
如果我理解正确,您有 2 个不同的电话。您预计有时会失败的第一个电话。但是,您不想重试第一个呼叫,而是要使用第二个呼叫。然后,如果第二个失败,您想重试使用断路器。
CircuitBreakerConfig config = CircuitBreakerConfig
.custom()
.slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
.slidingWindowSize(10)
.failureRateThreshold(25.0f)
.waitDurationInOpenState(Duration.ofSeconds(10))
.permittedNumberOfCallsInHalfOpenState(4)
.build();
CircuitBreakerRegistry registry = CircuitBreakerRegistry.of(config);
CircuitBreaker circuitBreaker = registry.circuitBreaker("searchService");
try {
// First call
service.search(request)
} catch (SearchException e) {
// Second call using circuit breaker
Supplier<List<SearchPojo>> searchSupplier = circuitBreaker
.decorateSupplier(() -> service.search(request, a_new_parameter));
}
于 2021-09-22T09:37:24.687 回答