![](/img/trans.png)
[英]How to add resilience4j retry to a spring boot 2 webclient call?
[英]Resilience4J Retry not auto-configured in Spring boot 3
我正在遷移到 Spring Boot 3。在 Spring Boot 2 中,Resilience4J Retry 是自動配置的,並使用以下設置開箱即用:
應用程序.yaml:
resilience4j.retry:
instances:
some-instance
# retry config here
測試類:
@SpringBootTest
public class TestClass {
@Autowired
private RetryRegistry retryRegistry;
@Test
void someTest() {
// perform test and evaluate retries using retryRegistry
}
}
但是,在使用以下版本更新到 Spring Boot 3 時:
org.springframework.boot:spring-boot-starter:jar:3.0.0:compile
io.github.resilience4j:resilience4j-spring-boot2:jar:1.7.0:compile (derived from a Spring BoM)
自動裝配 RetryRegistry 的測試失敗,並顯示以下消息:
Unsatisfied dependency expressed through field 'retryRegistry':
No qualifying bean of type 'io.github.resilience4j.retry.RetryRegistry' available:
expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
我設法通過使用以下方法在測試中顯式導入 Resilience4j Retry 配置來修復測試:
@Import(io.github.resilience4j.retry.autoconfigure.RetryAutoConfiguration.class)
但是,我想知道為什么 Spring Boot 3 中的組件掃描機制沒有首先選擇重試配置。 有誰知道為什么Spring Boot 3在組件掃描的時候沒有拾取類嗎?
它似乎與正在使用的新 META-INF 文件而不是舊的spring.factories
文件有關。 從文檔中:
Spring Boot 2.7 引入了一個新的 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件,用於注冊自動配置,同時保持與 spring.factories 注冊的向后兼容性。 在此版本中,已刪除對在 spring.factories 中注冊自動配置的支持,以支持導入文件。
spring-cloud-dependencies-parent
BoM 中使用的 Resilience4J 依賴項仍然使用spring.factories
文件,而不是名為org.springframework.boot.autoconfigure.AutoConfiguration.imports
的新文件。 最近在 Resilience4J( 來源)中引入了新文件。
用版本2.0.2
覆蓋 Spring BoM 中的所有彈性依賴項的版本為我修復了它。 過幾天再看看Spring BoM中是否更新了新的Resilience4J版本(或者引入了resilience4j-spring-boot3)。
[編輯] 正如其他人所注意到的, resilience4j-spring-boot3
已經可用。 我會開始使用它。
在 resilience4j 項目中,他們更改了 spring boot 3 的依賴項。
所以你應該去 io.github.resilience4j:resilience4j-spring-boot3:${resilience4jVersion}
像
org.springframework.boot:spring-boot-starter:jar:3.0.0:compile
io.github.resilience4j:resilience4j-spring-boot3:jar:2.0.0:compile
從文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.