Spring RedisTemplate est défini sur 2000 ms en prévision d'un délai d'expiration, mais il peut ne pas fonctionner et le traitement peut se bloquer. Vérifier s'il peut être effacé en ajoutant des paramètres, sinon, expirer par vous-même. .. ..
· Configuré setConnectionRequestTimeout:10000msec setReadTimeout:2000msec
·ajouter à? setConnectionRequestTimeout → Je n'ai pas pu vérifier car je n'avais pas assez de temps
・ Comment faire une pause par vous-même
Cette fois, c'était Async (méthode utilisant Spring @Async), alors définissez return to Future
RetryTemplate
RetryTemplate retryTemplate = new RetryTemplate();
Map<Class<? extends Throwable>, Boolean> exceptions = Maps.newHashMap();
exceptions.put(TimeoutException.class, true);
retryTemplate.setRetryPolicy(new SimpleRetryPolicy(10, exceptions));
FixedBackOffPolicy backOffPolicy = new FixedBackOffPolicy();
backOffPolicy.setBackOffPeriod(10);
retryTemplate.setBackOffPolicy(backOffPolicy);
Future<T>(getResult)
Future<T> future = async.execute();
T result = retryTemplate.execute(new RetryCallback<T, TimeoutException>() {
@Override
public T doWithRetry(RetryContext context) throws TimeoutException {
if (future.isDone()) {
return future.get();
}
throw new TimeoutException();
}
});
référence ・ API https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html
Recommended Posts