问题标签 [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-boot-actuator - Resilience4j 和 Spring Actuator - 开路查杀服务
我已将以下依赖项添加到我的 Spring Boot 项目中
当断路器打开时,我在执行器/健康端点上收到以下响应,状态代码为 503 服务不可用:
}
我的 AWS ECS 容器运行状况检查使用此端点来确定其运行状况,并在非 200 响应时重新启动容器。
由于我不希望在断路器打开时重新启动我的服务,有没有办法让断路器打开,而不会导致服务状态关闭?
我知道registerHealthIndicator: false
解决此问题的属性,但这会从执行器中删除断路器统计信息,我仍然希望看到。
spring - Resilience4j + CircuitBreaker 的 Spring 实例
我想使用 Resilience4j 来处理容错,我正在使用 CircuitBreaker 和 TimerLimit。
我想分离容错行为的业务逻辑,以免“弄脏”我的业务代码。
所以,我正在考虑使用命令模式来执行我的方法,就像 Hystrix 使用 HystrixCommand 一样。
例子:
调用我的控制器:
我的疑惑:
1 - 在这种情况下,circuitBreaker 确实需要是静态的,因为我理解同一个对象需要在你想要威胁的同一个方法之间共享,我是对的吗?
2 - 我如何有这个应用程序的许多实例,断路器为每个实例单独工作?我是对的?
spring-boot - 使用多个参数将 Resilience4j 断路器包裹在服务方法周围
Resilience4j-circuitbreaker 允许我们使用装饰器函数来包装服务,但据我所知,它只允许诸如供应商、消费者和函数之类的功能接口最多接受 1 个输入。
如果我有一个服务,它有一个接受 2 个参数的方法,我怎么能用断路器包装它?
在https://www.baeldung.com/resilience4j:
如果 process(int i) 类似于 process(int i, String s),那么哪个装饰器函数可以用于此目的?
resilience4j - 重试线程安全是否返回装饰函数?
我有一个向远程服务发送消息的类,如下所示。我正在使用resilience4j-retry 重试网络调用。由于根据文档重试实例是线程安全的,因此我在类级别创建它并重用它。
我的问题是返回的装饰函数Retry.decorateFunction(retry, this::postMessage);
是否也是线程安全的?
在这种情况下,我可以将其移至类级别,而不是每次调用 postMessageWithRetry 函数时都重复它。
spring-cloud - 具有反应弹性的弹簧云断路器4j
我对CircuitBreaker
使用感到困惑WebClient
。当依赖服务关闭时,不会执行回退。我需要额外的配置吗?
对于CircuitBreaker
使用RestTemplate
,无需任何进一步配置即可使用。在此处查看我的示例代码:https ://github.com/altfatterz/resilience4j-demo
这是我的例子
使用以下配置:
cloud - 请求折叠的 Hystrix 替代方案
随着 Netflix 正式将 Hystrix 置于维护模式(https://github.com/Netflix/Hystrix#hystrix-status),我开始寻找替代方案。当涉及到像断路器、隔板、重试和这些东西这样的模式时,有像弹性 4j 这样的不错的库,但是我找不到 Hystrix 可以做的请求崩溃的替代方案。
有人知道可以提供此类功能的库吗?
谢谢,本杰明
java - 使用resilience4j 重试不适用于某些异常
我正在使用resilience4j库重试一些代码,我有以下代码,我希望它运行4次。如果我抛出 IllegalArgumentException 它可以工作,但如果我抛出 ConnectException 它不会。
我希望重试重试所有异常。
java - 如何从弹性4j TimeLimitter 中抛出自定义异常?
我正在使用弹性 4j 的 TimeLimiter 来控制 RestTemplate 调用的超时请求。如果 response.getBody() 为空,我将抛出一个自定义异常,但是在 getorElseThrow 中提供了 Resilience4j 总是抛出异常。如何在这里抛出自定义异常?
在这里,我正在尝试抛出“methodWhichThrowsCustomException”抛出的异常,但我无法做到这一点,它只会抛出此处抛出的异常。
microservices - Resilience 4j 和 Prometheus 的集成
如何将 Resilience-4J 和 Prometheus 与微服务集成。
我已经将微服务与弹性 4j 以及 Prometheus 集成在一起。我的问题是,在 Prometheus 中我没有得到任何弹性查询,只有 HTTP 和其他默认的正在填充。
3>在 Prometheus Dashboard 弹性查询/矩阵中没有填充。
请帮忙。提前致谢
我还在下面添加了弹性 4j 和 Prometheus 集成的依赖项...
想要 Prometheus 仪表板上的弹性矩阵。
java - 可以将重试配置为在 null 上重试吗?
我刚开始使用resilience4j,想知道是否可以设置重试以重试空结果。这是一个例子:
这失败了,因为返回 null 是可以的。是否可以在 null 上配置重试。