问题标签 [spring-cloud-circuitbreaker]

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 回答
135 浏览

spring-boot - 检查 Spring Cloud CircuitBreakers 状态

在调用外部服务时,我们使用Spring 云断路器来处理中断。我们还有一个调用此服务的预定作业。如果 CircuitBreaker 已打开,我想阻止作业运行,但我看不到任何检查方法,因为 CircuitBreaker (Resilience4JCircuitBeaker) 或 CircuitBreakerFactory 都没有公开允许检查它的方法。还有另一种方法可以实现这一目标吗?

0 投票
0 回答
179 浏览

java - 使用 Spring Cloud Circuit Breaker 时避免在 NoFallbackAvailableException 中包装原因

我正在使用 Spring Cloud Circuit Breaker 2.0.0(resilience4j 实现)在我的应用程序中进行断路。假设有这样的方法定义:

我包裹doStuff在断路器中:

SomethingWentWrongException被抛出,并且我还没有为断路器声明一个后备,那么SomethingWentWrongException将被包装在一个实例中org.springframework.cloud.client.circuitbreaker.NoFallbackAvailableException作为“原因”。

我的问题是:是否有任何配置,以便 Spring Cloud CircuitBreaker 不会包含在内SomethingWentWrongExceptionNoFallbackAvailableException而只是简单地抛出SomethingWentWrongException

0 投票
1 回答
369 浏览

spring - 在运行时更改 Spring Cloud Circuit Breaker 的超时?

我正在使用 Spring Cloud Circuit Breaker 2.0.0(resilience4j 实现)在我的应用程序中进行断路和超时。我创建了以下配置:

现在我想编写一个集成测试来验证我的行为在超时发生时是否正确。为此,我想暂时将上面配置中指定的超时持续时间更改为 1 毫秒而不是 10 秒。

TimeLimiterConfig所以我的问题是:在编写 Spring Boot 集成测试时,如何更改(临时)超时值?

0 投票
0 回答
520 浏览

spring - 在 spring-boot 2.4 和 spring cloud 2020 中使用 openfeign 实现断路器

如果我想升级到 spring-boot 2.4 和 spring cloud 2020。

现在 spring-cloud-starter-netflix-hystrix 已经从 spring-cloud-netflix 中删除了,我该如何使用 openfeign 实现断路器?

我进行了直接导入,但我的 IDE 无法解析 feign.hystrix.enabled 并且 feign 没有执行回退类。

0 投票
1 回答
1630 浏览

java - Resilience4J 断路器中的配置不起作用

我正在使用 Resilience4J 的断路器,我需要忽略一些自定义异常,因此我需要更改默认配置。我正在使用微服务,因此我有一个连接到数据库的微服务,该数据库有一些基本请求,例如通过 id 获取,并且我还有一个使用这些请求的边缘服务。例如,我需要,如果 id 不存在,则微服务会引发自定义异常,并且在这种情况下断路器不会打开。

带有数据库的微服务:

  • 获取请求
  • 服务

    公共 SalesRepDTO getSalesRep(整数 id){

    }

边缘服务:

  • 服务

SalesRepNotFoundException.class 是我想忽略的异常,但断路器并未更改配置。有什么建议吗?

0 投票
0 回答
271 浏览

java - Spring Cloud Gateway 和基于 Resilience4j java 的配置面临的问题

我正在尝试创建一个具有断路器设计模式的 api 网关,当请求到达 api 网关微服务时,它会将请求重定向到特定的微服务,而当该微服务关闭时,它将执行回退方法。

运行云网关微服务时收到以下错误消息

java.lang.IllegalArgumentException:找不到类 [org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorAutoConfiguration]

我的配置类在下面

0 投票
3 回答
1048 浏览

aop - Resiliency4j CircuitBreaker 尝试在 AOP 中调用断路器逻辑,以实现在配置中禁用时不调用断路器

有条件地我想通过设置来关闭/打开断路器开关spring.cloud.circuitbreaker.resilience4j.enabled=false。我的逻辑应该不受断路器逻辑的影响。

spring.cloud.circuitbreaker.resilience4j.enabled=true我尝试使用下面的演示示例来扩展我的要求,我试图根据inapplication.property和case中true的断路器标志绑定目标方法上的断路器调用。false可能有一种更简单的方法来实现这一点,如果有任何其他解决方案而不是我尝试的解决方案,请帮助我。

示例: spring cloud circuit-breaker-resilency4j 示例

尝试调用快乐路径 - 没有异常时工作正常[响应在 3 秒内出现,因为时间限制器在 bean 创建中设置为 3 秒]

应用程序属性:

控制器:

模拟服务:

配置类:

ApplyCircuitBreaker - 自定义注释仅适用于所需方法:

AOP:CircuitBreakerAroundAspect:

我的要求: circuitBreakerFactory.create(joinPoint.getSignature().toString()) .run(() -> ....)在这一行,当目标方法抛出异常时,controll应该去回退机制调用。由于 joinPoint.proceed() 抛出异常,它强制处理异常 - 所以我在这里做错了,需要建议来解决这个问题以解决要求。

错误日志:

0 投票
0 回答
84 浏览

spring-boot - Hystrix 隔离策略 :: Semaphore 的替代方案

我是 Hystrix 的新手。我正在开发一个微服务项目。我在服务层方法上使用 Hystrix 来提供后备机制。下面是我的方法签名:

我必须使用execution.isolation.strategySEMAPHORE否则我不会在回退方法获得休眠会话工厂,因为 hystrix 将创建不包含当前事务属性的单独线程。

我想问专家组使用SEMAPHORE 作为策略是否是正确的方法?如果没有,那么如何克服这种情况?

0 投票
0 回答
695 浏览

java - 在弹簧靴中使用断路器

我最近研究了断路器模式,我正在做一个 POC 来在我的 Spring Boot 应用程序中实现它。我发现spring提供了一个开箱即用的resilience4j实现。

我正在研究一篇我在下面提到的 github repo 的文章

https://github.com/eugenp/tutorials/blob/master/spring-cloud/spring-cloud-circuit-breaker/src/main/java/com/baeldung/circuitbreaker/AlbumService.java

代码如下所示。我的疑问在于突出显示的声明

断路器 circuitBreaker = circuitBreakerFactory.create("断路器");

这是否意味着每次调用 getAlbumList()时都会创建一个新的断路器实例,因此断路器注册的事件的旧值将丢失。跨应用程序不应该只有一个实例。

我在这里很困惑,我忘记了spring框架的一些基本原理,请帮助我。我想了解这是如何工作的。

0 投票
0 回答
46 浏览

spring-cloud - Spring Cloud Circuitbreaker 中的 Resilience4j 重试模块

我正在尝试将我的 Spring Boot 2 Resilience4j 实现迁移到 Spring Cloud Circuitbreaker 提供的实现。

所以基本上,从弹性4j-spring-boot2 +弹性4j-reactor依赖到spring-cloud-starter-circuitbreaker-reactor-resilience4j依赖。

根据 Spring Cloud 文档,我发现可以通过定制器配置CircuitBreaker(包含TimeLimiter模块)和 Resilience4j 的Bulkhead模块。

但是,我没有看到任何可用于RetryRateLimiter模块的配置,它们是 R4J 文档中的可用功能。

有没有办法直接使用 Spring Cloud Circuitbreaker 配置这些模块,使它们成为 ReactiveCircuitBreakerFactory 的一部分?还是我仍然需要从中配置 RetryRegistry 设备?