API A вызывает API B, который, в свою очередь, вызывает API C. API A установил таймаут сокета в 15 секунд.API C вернет ответ в течение 15 секунд.Но я вижу, что иногда C закрывает сокет в течение 100 мс.Я хочу, чтобы API B повторил API C в случае истечения времени ожидания сокета в течение 15 секунд.API C может быть повторен любое количество раз в течение 15 секунд.Но если есть ответ, он должен быть возвращен A и не должен быть потерян.Есть ли способ сделать это в Java?
Я попытался с помощью пружинного retrytemplate, но с помощью этого я могу либо повторить указанное количество раз, либо повторить попытку через указанный интервал времени.Оба не соответствуют моим требованиям
@Retryable(value = {TypeOneException.class, TypeTwoException.class}, maxAttempts = 4, backoff = @Backoff(2000))
public String retryWhenException() throws TypeOneException, TypeTwoException {
//call API C
}