问题标签 [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 回答
632 浏览

spring-boot - 弹性4j Spring Boot 2

尝试一个简单的Spring Boot 2 + Resilience4j项目。

但是面临一个问题,即尽管主机应用程序已关闭,但断路器始终处于关闭状态。

服务等级

Resilience4J 配置

该服务被控制器多次调用,我希望它在至少 5 次调用后回退,但断路器始终处于关闭状态,并且对于来自控制器的每次调用,主机服务都被调用并且连接被拒绝。

依赖项:spring-boot-starter-web、resilience4j-spring-boot2、spring-aop、spring-boot-starter-actuator

早些时候,我尝试了使用 CircuitBreakerRegistry 和 Decorator Function 的编程方法,该方法按预期工作。

0 投票
1 回答
687 浏览

resilience4j - 如何在resilience4j中通过重试来装饰消费者功能界面

目前,resilience4j-all 库中的 DecorateConsumer.java 没有提供 Retry 的装饰方法(仅支持 Circuit Breaker、RateLimiter 和 BulkHead)。

Retry.java 类也没有提供这个选项

我有一个消费者函数 public void call(String key) ,它在内部执行一个带有键值的休息调用。

但是弹性 4j 文档提到“您可以通过重试来装饰任何 Callable、Supplier、Runnable、Consumer、CheckedRunnable、CheckedSupplier、CheckedConsumer 或 CompletionStage。”

我们如何在弹性 4j 中使用 Retry 来装饰消费者功能接口

0 投票
1 回答
785 浏览

resilience4j - 如何在 Resilience4J 中实现多个具有相同配置的断路器

我是 Resilience4J 的新手,正在尝试与 Spring Boot 集成。

我的应用程序有几个远程系统调用。我希望所有远程调用都具有相同的断路器配置。

我正在使用 java 配置和功能样式来装饰具有弹性 4J 运算符的远程调用。目前,我为所有远程系统调用定义了一个断路器和一个重试 bean。

但我观察到,通过这种方式,断路器(及其内部环形缓冲区)在系统 A 和系统 B 之间共享。因此,一个远程系统的故障正在影响另一个远程系统的故障阈值。

我需要为每个远程系统设置一个单独的断路器,以便维护每个远程系统的故障阈值。但是电路烧杯配置在远程系统中保持不变。

实现这一目标的最佳实践是什么?

0 投票
1 回答
481 浏览

spring-webflux - 断路器未将状态从 HALF_OPEN 更改为 CLOSED

我的 spring-boot 反应式应用程序中有这个断路器配置 -

然后我像这样调用上游 API -

invokeUpstream方法如下所示-

后备方法只是抛出异常 -

现在,当上游 API 5 次返回500响应时,我可以看到 circuitBreaker 状态正在从 CLOSED 状态移动到 OPEN 状态,这是预期的。在 OPEN 状态下,它根据配置保持 30 秒。之后,它进入 HALF_OPEN 状态,问题从这里开始。即使上游 API 返回成功响应,它也永远不会进入 CLOSED 状态,它永远保持在 HALF_OPEN 状态。

我在我的应用程序中使用这些依赖项 -

即使浏览了所有文档,我也不确定自己做错了什么。

0 投票
1 回答
309 浏览

resilience4j - 同时使用函数式编程和 Spring 注释 - Resilience4j

我正在使用弹性 4j 库来实现 Spring Boot 的容错。我想在 application.yml 文件中维护弹性 4j 配置。

我想使用弹性 4j 注释,因为它有助于保持业务逻辑的整洁。

但是在注释不起作用的情况下(例如 AOP 不允许调用同一类的方法并且无法注释 Spring 数据存储库方法)我想使用函数式编程方法。

对于 application.yml 文件中给出的配置,我如何在我的 Spring boot 应用程序中创建 CircuitBreaker 和 Retry bean,以便在某些场景中使用高阶函数式编程来装饰调用,并在其他场景中使用注解。

我目前的配置:

0 投票
1 回答
3402 浏览

java - spring-boot2 上的 Resilience4j - 断路器未打开

按照入门指南 ( https://resilience4j.readme.io/docs/getting-started-3 ) 和演示项目 ( https://github.com/resilience4j/resilience4j-spring-boot2-demo ) 我想自己测试它,创建一个更简单的测试应用程序。

这是代码:

控制器:

和服务类:

最后是应用程序文件:

我引入了一个概率为 70% 的随机错误来测试断路器。但是,电路永远不会打开,我总是会出错。我不知道我错过了什么!有什么帮助吗?

0 投票
2 回答
1206 浏览

java - 使用参数装饰 Resilience4j 断路器中的功能

我想用最新的 Resilience4j 断路器来装饰我的服务调用,我当前的代码如下所示:

曾经有一种方法decorateFunction,我很想使用,但由于未知原因,它在最新版本的弹性 4j 中被删除(我使用的是最新的 1.4 版本)

任何人都知道为什么这个功能被删除,目前的替代品是什么?我看到有类似的方法,decorateSupplier但我需要将参数传递给我的服务(在供应商的情况下不允许这样做)

0 投票
1 回答
325 浏览

spring-boot - Resiliance4j - 重试具有多个waitDuration的自定义IntervalFunction?

Resilience4j 版本:1.4.0 Java 版本:11

我想实现这里提到的确切内容:https ://resilience4j.readme.io/docs/retry#use-a-custom-intervalfunction

如果您不想在重试尝试之间使用固定的等待时间,您可以配置一个 IntervalFunction 用于计算每次尝试的等待时间。

我们需要在 yml 文件中配置它吗?还是我们需要覆盖 IntervalFunction ?我需要以指数方式重试 3 次,每次重试都有不同的等待时间,例如:第一次重试应该在 30 秒后,第二次重试应该在 45 分钟后,第三次重试应该在 2 小时后。在哪里配置这些时间戳?我是新手,请多多指教。

服务等级:

应用程序.yml

谢谢。

0 投票
1 回答
157 浏览

spring-boot - 需要在spring boot 1.3.0 Release中使用resilience4j retry和circuitbreaker

我有一个在 Spring boot 1.3.0 RELEASE 中开发的现有 spring boot 项目。我想使用resilience4j 重试和断路器功能。我发现弹性 4j 主要用于 spring boot 2.0+ 版本。我可以在 Spring Boot 1.3.0 发行版中使用 Resilience4j 并投入生产,因为对 Spring Boot 旧版本的支持较少,如果我错了,我觉得是对的吗?如果我可以在 spring boot 1.3.0 版本中适应弹性 4j 以进行重试和断路器,任何指南都会有所帮助。

注意:在这种情况下,无法升级 Spring Boot 版本 1.3.0 Release 在此先感谢

0 投票
1 回答
948 浏览

java - Resilience4j 围绕尝试的方法返回 CompletableFuture

我不知道如何用 Resilience4j 包装同步方法,以便它返回 CompletableFuture,尽管这似乎是 Resilience4j目标区域的一部分。特别是因为我要包装的同步方法可以抛出异常。我想要的伪代码:

Resilience4j 应该只尝试调用该方法 4 次直到它放弃,调用之间的间隔为 100 毫秒,然后完成异步调用。asyncResilience4jWrapper 调用者应该只取回一个 CompletableFuture ,它不会阻塞并且不关心任何这些。