Dil*_*oda 3 java spring spring-mvc spring-boot
我已经实现了一个通过 Resttemplate 调用外部服务的 java 方法。同样,我还在该方法中实现了一些额外的业务逻辑。我如何为这些休息调用实现重试机制。还需要考虑以下几点。
小智 8
您可以在里面添加重试机制HttpClient并将其用于RestTemplate,像这样:
@Bean
public ClientHttpRequestFactory clientFactory() {
HttpClient httpClient = HttpClients.custom()
.setRetryHandler((exception, executionCount, context) -> {
if (executionCount > 3) {
log.warn("Maximum retries {} reached", 3);
return false;
}
if (<some condition for retry>) {
log.warn("Retry {}", executionCount);
return true;
}
return false;
})
.build();
return new HttpComponentsClientHttpRequestFactory(httpClient);
}
@Bean
public RestTemplate customRestTemplate(@Qualifier("clientFactory") ClientHttpRequestFactory clientFactory){
return new RestTemplate(clientFactory);
}
Run Code Online (Sandbox Code Playgroud)
Spring 提供了带有@Retry注释的重试机制。您必须使用以下依赖项。
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.1.5.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Spring 提供了以下注解。
Spring重试注解
@EnableRetry – 在 spring boot 项目中启用 spring 重试
@Retryable - 指示任何方法作为重试的候选者
@Recover – 指定回退方法
我在示例代码下方提供。
@Configuration
@EnableRetry
@SpringBootApplication
public class MyApplication {
}
Run Code Online (Sandbox Code Playgroud)
您可以参考完整的示例以了解更多信息。
| 归档时间: |
|
| 查看次数: |
9076 次 |
| 最近记录: |