我正在制作一个Spring Boot应用程序,希望在其中启用对某些HTTP连接的重试。我对该应用程序如何比较状态代码并触发函数以重试执行感到困惑。关于此的任何见解都会有所帮助,我假设有一个检索状态码的函数,但我找不到它。以下是我创建的班级:
公共类HttpFailedConnectionRetryPolicy扩展了ExceptionClassifierRetryPolicy {
@Value("SomeValue")
private Integer maxAttempts;
public HttpFailedConnectionRetryPolicy() {
final NeverRetryPolicy doNotRetry = new NeverRetryPolicy();
final SimpleRetryPolicy simpleRetryPolicy = new SimpleRetryPolicy();
simpleRetryPolicy.setMaxAttempts(maxAttempts);
this.setExceptionClassifier(new Classifier<Throwable, RetryPolicy>() {
@Override
public RetryPolicy classify(Throwable classifiable) {
if (condition) {
return simpleRetryPolicy;
}
return new NeverRetryPolicy();
}
});
}
}
最佳答案
如果您的异常类型为HttpStatusCodeException,则可以检查e.getStatusCode()
你的情况应该是
public RetryPolicy classify(Throwable classifiable) {
if (classifiable instanceof HttpStatusCodeException) {
if(((HttpStatusCodeException)classifiable).getStatusCode().value!=404)
return simpleRetryPolicy;
}
return new NeverRetryPolicy();
}