Повторите запрос с помощью CompletableFuture Java - PullRequest
1 голос
/ 10 ноября 2019

У меня есть ситуация, когда мне нужно вызывать параллельные http-запросы для получения данных. Я использовал CompletableFuture для получения данных, как показано ниже.

Generictype model = CompletableFuture.supplyAsync(() -> {
        return lookupService.fetchData(token);
    }, taskExecutor)

Проблема в том, что я передаю токен доступа, который имеет очень короткий период, скажем, 60 секунд после истечения срока его действия.

ЕслиСрок действия токена истекает. Мне нужно вызвать другую службу, чтобы получить токен обновления, и повторить тот же запрос с этим новым токеном.

Как я могу справиться с ситуацией, когда срок действия токена истекает между параллельными вызовами.

Я пытаюсь сделать так, чтобы по истечении срока действия маркера доступа было выдано исключение UnAuthorized 401.

Я пытаюсь перехватить исключение в блоке исключительных ситуаций CompletableFuture, как показано ниже.

Generictype model = CompletableFuture.supplyAsync(() -> {
    return lookupService.fetchData(token);
}, taskExecutor)
   .exceptionally(exception -> {
        String newToken = lookupService.getNewToken(token);
            model = lookupService.fetchData(newToken);
        return model;
    });

Когда я получаю исключение, он входит в блок исключения, но запрос не выполняется должным образом. Он отвечает 302 ответом SAMEORIGIN.

Это правильный способ обработки этой ситуации илиЕсть ли другой способ, чтобы я мог повторить запрос, когда токен доступа истек

...