Spring RedisTemplate ist in Erwartung eines Zeitlimits auf 2000 ms eingestellt, funktioniert jedoch möglicherweise nicht und die Verarbeitung kann zum Stillstand kommen. Überprüfen Sie, ob es durch Hinzufügen von Einstellungen gelöscht werden kann. Wenn nicht, können Sie selbst eine Zeitüberschreitung feststellen. .. ..
· Konfiguriert setConnectionRequestTimeout:10000msec setReadTimeout:2000msec
·hinzufügen? setConnectionRequestTimeout → Ich konnte nicht überprüfen, weil ich nicht genug Zeit hatte
・ Wie Sie selbst eine Auszeit nehmen können
Diesmal war es Async (Methode mit Spring @Async), setzen Sie also return auf 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();
}
});
Referenz ・ API https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html
Recommended Posts