问题标签 [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.
spring-boot - 检查 Spring Cloud CircuitBreakers 状态
在调用外部服务时,我们使用Spring 云断路器来处理中断。我们还有一个调用此服务的预定作业。如果 CircuitBreaker 已打开,我想阻止作业运行,但我看不到任何检查方法,因为 CircuitBreaker (Resilience4JCircuitBeaker) 或 CircuitBreakerFactory 都没有公开允许检查它的方法。还有另一种方法可以实现这一目标吗?
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 不会包含在内SomethingWentWrongException
,NoFallbackAvailableException
而只是简单地抛出SomethingWentWrongException
。
spring - 在运行时更改 Spring Cloud Circuit Breaker 的超时?
我正在使用 Spring Cloud Circuit Breaker 2.0.0(resilience4j 实现)在我的应用程序中进行断路和超时。我创建了以下配置:
现在我想编写一个集成测试来验证我的行为在超时发生时是否正确。为此,我想暂时将上面配置中指定的超时持续时间更改为 1 毫秒而不是 10 秒。
TimeLimiterConfig
所以我的问题是:在编写 Spring Boot 集成测试时,如何更改(临时)超时值?
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 没有执行回退类。
java - Resilience4J 断路器中的配置不起作用
我正在使用 Resilience4J 的断路器,我需要忽略一些自定义异常,因此我需要更改默认配置。我正在使用微服务,因此我有一个连接到数据库的微服务,该数据库有一些基本请求,例如通过 id 获取,并且我还有一个使用这些请求的边缘服务。例如,我需要,如果 id 不存在,则微服务会引发自定义异常,并且在这种情况下断路器不会打开。
带有数据库的微服务:
- 获取请求
服务
公共 SalesRepDTO getSalesRep(整数 id){
}
边缘服务:
- 服务
SalesRepNotFoundException.class 是我想忽略的异常,但断路器并未更改配置。有什么建议吗?
java - Spring Cloud Gateway 和基于 Resilience4j java 的配置面临的问题
我正在尝试创建一个具有断路器设计模式的 api 网关,当请求到达 api 网关微服务时,它会将请求重定向到特定的微服务,而当该微服务关闭时,它将执行回退方法。
运行云网关微服务时收到以下错误消息
java.lang.IllegalArgumentException:找不到类 [org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorAutoConfiguration]
我的配置类在下面
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() 抛出异常,它强制处理异常 - 所以我在这里做错了,需要建议来解决这个问题以解决要求。
错误日志:
spring-boot - Hystrix 隔离策略 :: Semaphore 的替代方案
我是 Hystrix 的新手。我正在开发一个微服务项目。我在服务层方法上使用 Hystrix 来提供后备机制。下面是我的方法签名:
我必须使用execution.isolation.strategy
SEMAPHORE否则我不会在回退方法上获得休眠会话工厂,因为 hystrix 将创建不包含当前事务属性的单独线程。
我想问专家组使用SEMAPHORE 作为策略是否是正确的方法?如果没有,那么如何克服这种情况?
java - 在弹簧靴中使用断路器
我最近研究了断路器模式,我正在做一个 POC 来在我的 Spring Boot 应用程序中实现它。我发现spring提供了一个开箱即用的resilience4j实现。
我正在研究一篇我在下面提到的 github repo 的文章
代码如下所示。我的疑问在于突出显示的声明
断路器 circuitBreaker = circuitBreakerFactory.create("断路器");
这是否意味着每次调用 getAlbumList()时都会创建一个新的断路器实例,因此断路器注册的事件的旧值将丢失。跨应用程序不应该只有一个实例。
我在这里很困惑,我忘记了spring框架的一些基本原理,请帮助我。我想了解这是如何工作的。
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模块。
但是,我没有看到任何可用于Retry和RateLimiter模块的配置,它们是 R4J 文档中的可用功能。
有没有办法直接使用 Spring Cloud Circuitbreaker 配置这些模块,使它们成为 ReactiveCircuitBreakerFactory 的一部分?还是我仍然需要从中配置 RetryRegistry 设备?