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

spring-boot - Resilience4j Retry+Spring Boot 2 application.yml 配置未应用

我将 Resilience4j @Retry 与 @CircuitBreaker 结合使用。我在 SpringBoot 2 中使用注释,我的配置在application.yml中。我在@Retry 注释中有一个后备方法,但在@CircuitBreaker 中没有(这是使它们一起工作的方法,因为根据我的发现的方面顺序)。

@CircuitBreaker 使用我在 application.yml 中的配置可以正常工作。重试也有效,但仅使用默认配置值并且不反映application.yml中的值(例如:maxAttempts 是 3 而不是 5)。

知道我在这里可能做错了什么吗?

在代码中:

application.yml 中的配置

0 投票
1 回答
244 浏览

java - Resilience4j 返回一个 CompletableFuture 围绕带参数的尝试方法

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

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

真正困难的部分似乎是让它为带有参数的方法运行,抛出异常!

0 投票
0 回答
370 浏览

spring-boot - Resilience4j 断路器执行器健康检查指标显示一些负数

我正在使用带有弹簧靴的 resiliance4j 断路器。在执行器健康点指标中,我看到一些差异,因为慢速呼叫,缓慢失败的呼叫数是负数而不是正数。这不会让我的断路器打开。任何人都可以帮助我了解这一点,这些负值是什么意思?

0 投票
1 回答
1423 浏览

spring-boot - 如何将 CircuitBreaker 与 TimeLimiter 和 Bulkhead 结合使用?

我有一个通过 REST 调用依赖项的服务。服务和依赖是微服务架构的一部分,所以我想使用弹性模式。我的目标是:

  • 当依赖关系陷入困境时,有一个断路器来保护它
  • 限制呼叫可以运行的时间。该服务具有 SLA,并且必须在特定时间内回答。在超时时,我们使用回退值。
  • 限制对依赖项的并发调用数。通常调用率很低,响应速度很快,但我们希望保护依赖关系免受服务内部的突发和排队请求。

以下是我当前的代码。它可以工作,但理想情况下我想使用TimeLimiterandBulkhead类,因为它们似乎是为了一起工作而构建的。

我怎样才能写得更好?

理想情况下,我想写一些类似于Flows的文档描述的东西:

0 投票
0 回答
299 浏览

java - 将 ThreadPoolBulkhead 与 Timelimiter 和 Retry 一起使用时出现问题

早些时候,我们在代码中使用了 Bulkhead、CircuitBreaker 和 Retry,一切都按预期工作。现在我们想使用 TimeLimiter,我们修改了代码以一起使用 ThreadPoolBulkhead、TimeLimiter、CircuitBreaker、Retry 和 Fallback。以下是我们目前的配置:

配置文件

下面是我们如何在代码中使用它:

Fallback 机制与上面相同,唯一的区别是它使用fallbackA了 timelimiter 的实例,该实例被配置为在 10 秒后超时。

在测试系统时(20 tps,5-10 分钟),一切都按预期工作。但是当我们以相同的 20tps 将负载持续时间增加到 3-4 小时时,我们注意到系统在 40-45 分钟内按预期工作并且交易正在进行;但在那之后所有的交易开始失败。

在没有 TimeLimter 和 ThreadPoolBulkhead 的情况下,同样的事情。

上面的配置有问题吗?另外,当我们有线程池隔板时,为什么我们需要提供单独的 Scheduled Executor 服务?它不应该采用分配给隔板的线程吗?

此外,我们尝试在班级级别更改Executors.newSingleThreadScheduledExecutor()为。Executors.newScheduledThreadPool(10)然后一切都按预期在积极的情况下工作,但是当我们在 hello() 上延迟 45 秒并且回退也有延迟(它也应该从那里超时)并且负载保持不变,即 20 tps。我们注意到最初的 2 个事务是成功的,而其余的事务则失败了。但我们不确定为什么这 2 笔交易有效(它们花了大约 1 分 40 秒),它们也应该失败。

0 投票
2 回答
244 浏览

spring - 如何在 @Aspect 类中调用 @RateLimiter 注释

我试图在一个方面类中实现弹性逻辑,类似于日志记录的实现方式。下面是我一直在尝试的一段代码,但它不起作用。

当调用 pj.proceed() 时,实际的逻辑被执行,但 @ratelimiter 注释似乎不起作用,因为执行的调用次数没有根据 application.yml 文件中给出的配置受到限制。

0 投票
1 回答
276 浏览

resilience4j - 未使用 CompletableFuture 执行服务

我一直在尝试使用 Resilience4j + OpenFeign 来调用服务。当我收到错误时,超时工作正常,但是,如果成功,它总是返回null,我找不到原因。有人可以帮我吗?

创建构建器:

使用 RateLimiter 获得 CompletableFuture:

调用服务并始终获得null结果:

API 正在返回一些东西,但是,我无法以这种方式工作。有什么我在这里想念的吗?

我正在使用以下版本:

提前致谢。

0 投票
0 回答
129 浏览

spring - 使用 CircuitBreaker 注释的方法的集成测试不起作用

我有一个 SpringBoot 应用程序,它使用注释实现了断路器。带注释的熔断器是一个方面,因此客户端不必使用熔断器注释显式注释其方法。当我从浏览器中高频点击 RequestMapping 时,将应用熔断器设置并调用回退。

问题是当我尝试通过使用并发线程调用 api 从 Test 类进行测试时。由于 api 已关闭,回退机制启动,但断路器的配置设置不显示。从 Postman 调用多个请求时的行为也相同。

0 投票
1 回答
23 浏览

circuit-breaker - 每个消息/api调用有2个差异/相同的断路器(resilience4j)是推荐还是好主意?

在我的微服务中,断路器存在于发生外部 api 调用的层,我记录的异常是在此外部 api 调用期间可能发生的异常。但是我的服务超时配置在此层之上(存在/配置了断路器)层。我无法将断路器移动到配置超时的层,反之亦然。

基本上,我想记录发生在不同层的这个超时异常。

每个消息/api调用有2个差异/相同的断路器是推荐还是好主意?

0 投票
1 回答
1473 浏览

spring - 呼叫不会使用 Resilience4 断路器的回退方法

我正在使用 Resilience4j 断路器版本:'1.4.0 和 Spring Boot 版本 2.0.6,我的问题是 - 回退方法不起作用。该调用不会转到回退方法。下面是我的代码:

-- 和后备方法:

--application.yml 中的配置