问题标签 [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.
spring - 引起:java.lang.ClassNotFoundException:io.github.resilience4j.circuitbreaker.CircuitBreakerOpenException
我正在关注一些关于微服务的书,我现在正在阅读关于弹性 4j 的章节,但是当我运行 maven build 或 test 时,我总是得到:
关于它的谷歌并不多,每个主题都指向缺少以下依赖:
但是我在我的 pom.xml 中得到了它,pom.xml 具有与书中相同的依赖关系。这是完整的 pom.xml:
我还附加了堆栈跟踪:
编辑
正如所建议的那样,我还添加了:
但问题仍然存在。
spring - 如何将弹性 4j 重试添加到 spring boot 2 webclient 调用?
我正在尝试使用不工作的resilience4j重试将重试机制添加到webclient rest调用。如果出现异常,该方法只会被调用一次。我正在使用带有 kotlin 的 spring boot 2。
这是来电者
这是配置
这是我的方法:
如果我从方法中抛出硬编码异常,重试工作正常
此外,它适用于 restTemplate
kotlin - 使用 Resilience4j 和 WebClient 的正确方法
我正在编写一个断路器包装器,它应该封装 http 调用(使用 Spring WebClient )。所有的集成服务都将调用 invokeService() 方法,该方法又调用 excecute()。
现在,如果 execute() 成功了,那很好。如果不是,断路器应在 n 次故障后触发(基于配置)。这就是我所做的。不确定这是否可行(因为 Mono)以及正确的方法。
这就是 execute() 的样子:
spring-boot - 在resilience4j中重试+断路器
我尝试仅使用断路器重试,即使那样它也不起作用。你能告诉我们如何将它们(重试+断路器)链接在一起。它优先考虑断路器
I am using like this :
@CircuitBreaker(name = "backendA", fallbackMethod = "circuitBreakerFallback")
@Retry(name = "backendA", fallbackMethod = "retryFallback")
我也在 yml 文件中添加了这段代码
弹性4j.retry.retry-aspect-order=1
仍然没有工作...
我正在使用 Resilience4J 0.17.0 版本
java - 弹性4j - 请求超时
我有一个使用 Hystrix 断路器模式的服务,它调用 3rd 方服务。在...的帮助下
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000")
我已经为第 3 方服务定义了超时。
由于 Hystrix 处于维护模式,我正在从 Hystrix 迁移到 Resilience4j 断路器模式。如何在 resiience4j 中实现类似的超时处理。
我知道可以通过使用@TimeLimiter
它是resilience4j-timelimiter的一部分来实现类似的事情。但是根据这个问题:https ://github.com/resilience4j/resilience4j/issues/849 ,我必须将我的方法的返回类型修改为CompletableFuture
. 它将涉及对我现有服务的大量代码更改。我如何使用resilience4j 实现这一目标?
spring-boot - 弹性4j注释不适用于chlid类
我正在将弹性 4j 与 SpringBoot 一起使用。我看到resilience4j 注释只有在它们被放置在抛出异常的类中时才起作用。如果该类由另一个类扩展并且父类具有注释,则重试不起作用。
Resilience4j 配置
家长班
儿童班
这是预期的行为吗?如果我遗漏了什么,你能告诉我吗
java - Resilience4J 断路器配置无法正常工作
我正在尝试Circuitbreaker
使用自定义构建 Resilience4JCircuitbreakerConfig
使用以下代码构建CircuitbreakerConfig
我正在使用它来进行 HTTP 调用。响应总是需要超过 1000 毫秒。理想情况下,如果前 100 个调用很慢,如果 50 个,CircuitBreaker 应该转换到 OPEN 状态。但它仅在 100 次调用后才转换为 OPEN 状态。
无法理解这种行为。寻求帮助。
spring-boot - 以编程方式创建断路器时缺少指标
我想用编程方法定义一个断路,所以我做了:
问题是,即使它工作正常,我在指标中得到以下信息:
同时,如果我在属性文件中定义它:
我能看到它。问题可能是什么?我正在使用弹性4j-spring-boot2 依赖项。
java - Resilience4j.retry 异常不工作
我正在使用弹性4j.retry和弹性4j .断路器。Service1
正在调用另一个Service2
可能引发异常的服务。即使我遇到异常,我也应该尝试连接至少定义的次数waitDuration * maxRetryAttempts
。
服务 1 ---> 调用 ---> 服务 2
应用程序.yml
Service1Repository.java
但是,当Service2
它关闭时,它不会重试(最多 4 次,每次应该在 1000 毫秒后发生)我会null
立即得到响应(在我的情况下)。我尝试增加值(10000ms),还是一样。我看到打印了日志,但服务应该等待waitDuration * maxRetryAttempts
是否Serviece2
关闭。
spring-boot - Resilience4j 隔板 线程行为
我正在使用 Resilience4j 进行大量测试并监控线程的行为。
我正在使用 spring-boot 2.2.5,resilience4j 1.4.0。Gatling(加载工具),visualvm(分析线程)
我意识到:
当我使用隔板类型 = SEMAPHORE.
我意识到异步执行将使用默认的 ExecutorService,在这种情况下,ForkJoinPool 和此配置将起作用:
如果您使用的是bulkhead type = THREADPOOL,上述配置将被忽略。
当我使用散装的 THREADPOOL 时,这些配置将起作用:
这些配置将被忽略:
/li>
我的代码:
配置:
SlowService 对另一个应用程序进行慢速网络调用
我配置这些值只是为了测试,在生产中这些值会有所不同。
问题是:
1 - 我的应用程序是 I/O Bound,我希望当有很多请求(40/s)时,resilience4j 创建的线程池达到 maxThreadPoolSize 数量,但只创建了 3 个线程(cpu 核心数量 -1)我看到了仅创建:
隔板-MyService-1、隔板-MyService-2、隔板-MyService-3
问题是什么?
2 - 我做了这个配置:
我将 slowService 配置为 10 秒,太慢了。
我一次做了 3 个请求,系统的行为是这样的:
- 一次只处理1个,没关系,因为core和maxThread都是1。
- 请求被查询了,没问题,因为queueCapacity是2。
但是,我希望在队列中等待的请求只等待 3ms,因为是配置的时间。
如何限制线程在队列中等待的最长时间?
[编辑][更新] 我做了更多的测试并意识到:
当一个线程忙时,如果所有 coreThread 都忙,另一个到达的请求将启动一个新任务,直到到达 coreThread。
如果池到达 coreThread,每个新请求都会被放入队列,队列满后,新请求会创建新线程,直到达到 maxPoolThread。
关于 keepAliveDuration,线程将在空闲一段时间后终止。coreThreadSize 将处于空闲状态,只会终止多余的线程。
我所有的疑问都通过我的测试得到了解答。
现在我只想知道 THREADPOOL 和 SEMAPHORE 之间的不同行为?