问题标签 [resilience4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
876 浏览

groovy - 在resilience4j-retry中达到最大尝试后抛出异常

达到最大重试次数时如何抛出异常。在我的情况下,当Response有其他代码而不是 200 时,我想抛出异常。

0 投票
1 回答
644 浏览

java - Spring boot2 抱怨 CircuitBreakerConfigurationOnMissingBean

我在 Spring Boot 版本 2.0.6 上运行了 Spring Boot 应用程序。我添加了resilience4j 以具有断路器功能,但应用程序抱怨CircuitBreakerConfigurationOnMissingBean。

尝试添加所有必需的依赖项。POM 片段

0 投票
1 回答
794 浏览

resilience4j - Resilience4j 服务调用的最大等待时间

我正在查看 Resilience4j 的文档,但似乎找不到时间限制器的配置。

我在 Spring Boot 2 中工作,并使用在 application.yml 中配置设置。到目前为止,它看起来像这样:

我应该添加什么属性以使其快速失败?

0 投票
1 回答
1230 浏览

java - 以编程方式创建的 Feign 客户端和 Eureka 目标

前几天我开始学习微服务中的容错解决方案。我的生态系统中有一些微服务,它们现在与 Eureka 服务查找互连。我使用 FeignClient 从一个呼叫到另一个呼叫。当我听到和读到 Hystrix 正在进行维护时,我想知道我是否可以在 Feign 中使用 Resilience4J 而不是 Hystrix。好吧,至少不像现在看起来的那样从注释级别。我找到了一个很棒的 Feign.Builder 适配器,可以在 FeignClient 之上添加弹性 4j 容错功能作为装饰器(https://github.com/resilience4j/resilience4j/tree/master/resilience4j-feign)所以我想使用它。

所以我用了这个,把特性加在一起,把默认的编码器、解码器等项目添加到feign builder中。事实证明,我当然必须使用 .target 调用来完成我的代码,该调用会创建我的客户端代理,而我无法用 Eureka 以一种好的方式真正做到这一点:

  1. 第一个构造函数,它采用类类型并且 URL 是硬编码的,所以如果我在这个参数中添加一个 eureka next server 查询,它只是一个实例的硬编码 url,这不是负载平衡的。某种解决方法可能是我创建该客户端的原型作用域或类似的短期作用域 bean,并始终获得调用的“下一个 url”。这增加了在我制作的每个课程中使用客户端的负担。至少在我看来。也许我可以在原型设计周围添加某种单例辅助 bean,但正如我所见,这又不是一个好的设计

  2. 我想也许我可以从 Target 接口创建一个 EurekaTarget,但是当然没有任何方法表明任何“生命周期结束”的东西,甚至是 apply 方法。我想这可能是在进行服务调用之前调用的一个点,但我看到多个调用它,所以我不得不更改所有调用的 url。

您知道进行此迁移的更好解决方案吗?

0 投票
2 回答
478 浏览

java - 如何在spring中创建已经代理的类的动态代理

我对弹簧/弹簧靴比较陌生。

目前我正在使用一个 Spring Boot Rest 应用程序,它提供了一个 FeignClient 以包含在其他项目中。现在,我希望那些 FeignClients 被 CircuitBreaker 包裹起来。

我想出的最佳解决方案是动态创建一个代理,其中包括 CircuitBreaker 实现,它本身调用创建的 FeignClient。

因此,假设我有以下描述 RestController 的接口:

现在,我有了 FeignClient 的接口:

所以.. 我的目标是实现类似我有另一个注释的东西,例如@WithCircuitBreaker,然后我将被扫描并动态创建一个代理 bean,它将被注入而不是 FeignClient bean。

目前我的代码如下所示:

据我所知,我现在可以创建一个@Configuration如下所示的类:

现在我到了这一点,我不知道如何继续。如何动态创建执行以下操作的代理类:

然后一旦有人自动WebService连接接口,就返回这个代理而不是从 Feign 生成的代理。

0 投票
1 回答
184 浏览

java - 在哪里定义 @CircuitBreaker(name = BACKEND, fallbackMethod = "fallback") 的名称?

我正在尝试为 Resilience4j 使用 Spring Boot 注释。

当我使用注释时@CircuitBreaker(name = BACKEND, fallbackMethod = "fallback")

我的 Intellij 为断路器名称 BACKEND 显示红色。

我如何/应该定义一个可以通过注释中的名称识别的断路器?

0 投票
1 回答
1224 浏览

java - Resilience4j 断路器属性强制打开

我可以看到我可以使用以下代码以编程方式将状态设置为强制打开:CircuitBreaker Forced Open State

但是有没有办法设置一个属性来在应用程序启动时立即将状态设置为这个,以便可以与测试一起使用?

0 投票
1 回答
1220 浏览

java - 不使用注释时将resilience4j与spring-boot 2执行器集成?

我的基于 spring boot 2.1 的 webflux 应用程序(来自project reactor)正在使用一个库(L),它暴露了一个来自 Resilience4j 1.0.0的Mono包装(它使用诸如 的注释)。CircuitBreakerOperator@CircuitBreaker

我真的很想在 Spring 执行器 http 管理控制台中显示此断路器的指标(例如在健康端点中)。我添加了io.github.resilience4j:resilience4j-spring-boot2:1.0.0依赖项,但是当我加载健康页面时,我只看到:

即,似乎没有检测到库 L 中的断路器。所以我的问题是,当 Spring Actuator没有使用注释应用它们时,如何让 Spring Actuator 了解 Resilience4j 的断路器(最好还有速率限制器等) ?

0 投票
1 回答
1635 浏览

spring-cloud - 使用带有 Spring Cloud 断路器的注释 - Resilience4j

是否可以通过注释在 Spring Cloud Circuit Breaker 上使用 Resilience4j?我找不到任何关于它的文档,只有关于通过代码使用弹性 4j 的示例

0 投票
1 回答
298 浏览

java - RxJava equivalent of simple ThreadPoolExecutor example

I've been out of the Java game for ~8 years and a lot has changed since then. The biggest challenge for me has been RxJava / reactive. I'm looking for rough guidance on how to do the equivalent below in a fully reactive way.

The basic requirement, implemented below using ThreadPoolExecutor, is to processing a large amount of Stuff by calling a remote web service, which has a documented rate limit of 100 requests/minute. My goal is to process as much as possible as fast as possible, without dropping any Stuff but still honoring the downstream rate limit. This code has been simplified to avoid errors, bulkheads, circuit breakers, retry logic, etc.

This code currently works fine but it results in what feels like a lot of wasted threads given all the non-blocking reactive options. Even the HTTP client I'm using to call my service offers back a Flowable, which I'm simply blocking on in each of the executor's 20 threads.

I'd love to understand what the reactive equivalent should be. Where I've struggled is almost all the docs I find showcase using static sources for the Observable (ex: Observable.fromArray(1,2,3,4,5)). I know the solution likely involves IoScheduler and maybe groupBy, but I have yet to figure out how to merge the Flowables coming from my HTTP client into some complete chain that does parallelization (up to a limit, such as 20) and rate limiting.

Thank you!