Я новичок в Java 8 & в процессе изучения API CompletableFuture.У меня также есть требование, когда мне нужно сделать асинхронный вызов стороннего API, а затем подождать 7 секунд.Через 7 секунд продолжите мою фактическую обработку.Также мне нужно проверить, успешно ли завершился асинхронный вызов за эти 7 секунд.Если да, то Журнал Успешного ответа или если Асинхронный вызов завершился исключительно, тогда Журнал ошибочного ответа в моей базе данных.
CompletableFure<Void> thridPartyCallFuture = Async Call to Third Party API;
//Wait for 7 seconds
Мне не нужно извлекать какой-либо ответ от Стороннего вызова API, мне просто нужно сделать паузу для7 секунд.
И поэтому я попытался позвонить thridPartyCallFuture.get(7, TimeUnit.SECONDS);
, но проблема в том, что когда я вызываю thridPartyCallFuture.isDone()
, он всегда будет возвращать true, но в случае, если thridPartyCallFuture
завершился исключительно, я не получузнать, что важно регистрировать сообщения об ошибках в БД.Давайте рассмотрим сценарий, когда сторонний API не работает, и наш вызов был выполнен исключительно.В этом случае isDone()
вернет true
, тогда как isCompletedExceptionally()
вернет false
.
Проверьте, успешно ли завершено thridPartyCallFuture
, затем зарегистрируйте ответ об успешном выполнении в БД.
Проверьте, еслиthridPartyCallFuture
завершился в исключительном порядке, затем запишите ответ об ошибке в БД.
Я пытался исследовать acceptEither
, но не смог сделать это правильно.
Я узнал в Java 9 новыйвведен метод orTimeOut(int)
, но в Java 8 такого метода нет.
Любая помощь приветствуется!
Заранее спасибо.