如何在断路器中添加重试和自定义恢复方法 - 功能性 java
Posted
技术标签:
【中文标题】如何在断路器中添加重试和自定义恢复方法 - 功能性 java【英文标题】:How can I add retry and custom recovery method in a circuit breaker - functional java 【发布时间】:2021-11-04 02:21:57 【问题描述】:我正在尝试将弹性 4j 断路器添加到我的项目中。为此,如果调用失败并重试,我有一个自定义机制。如何更改这两个的执行顺序?有没有一种方法可以让我先执行我的自定义机制,如果也失败了,然后重试?
【问题讨论】:
【参考方案1】:如果我理解正确,您有 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));
【讨论】:
以上是关于如何在断路器中添加重试和自定义恢复方法 - 功能性 java的主要内容,如果未能解决你的问题,请参考以下文章