如何解决Resilience4j重试的新实例还是从RetryRegistry检索?
使用重试保护方法时,我应该每次创建一个新实例还是从RetryRegistry中重用同一实例?
我应该使用哪个?
A)
for(int i: mylist){
Retry retry = Retry.ofDefaults("backendName");
Mono.fromCallable(backendService::doSomething).transformDeferred(RetryOperator.of(retry))
}
或
B)
RetryRegistry retryRegistry = RetryRegistry.ofDefaults();
for(int i: mylist){
Retry retry = registry.retry("backendName");
Mono.fromCallable(backendService::doSomething).transformDeferred(RetryOperator.of(retry))
}
重试不是总是一个新实例来跟踪状态和尝试次数,还是幕后的注册表在调用它时返回一个新实例?
解决方法
您必须使用b)。 您一定不能为每个呼叫创建一个新的Retry实例。重试实例在内部为每个订阅创建一个新的重试上下文。 您甚至应该只在构造函数中执行一次查找。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。