Переключение между первичным и вторичным источниками в тайм-ауте в Java

Я разрабатываю API, который зависит от двух сторонних источников данных. Один из них - SOAP API (первичный источник), а другой - база данных mssql (вторичный источник). Проблема в том, что эти два источника нестабильны и влияют на API и другие API-интерфейсы в экосистеме из-за большого количества потоков, ожидающих ответа на долгое время (его съемка JVM-памяти). Я хочу иметь реализацию, которая таймаута первичного источника данных через определенное количество времени, если не ответила и переключится на вторичный источник и дождитесь ответа до истечения таймаута, в противном случае покажет некоторый ответ об ошибке.

Я прошел через параллельные API-интерфейсы Java. И нашел одно решение используя ExecutorService # submit (вызываемый), которые возвращают Будущее и имеет метод Future # get (5, TimeUnit.SECONDS), который будет блокироваться до достижения таймаута.

  • Рекомендуется ли использовать эту функцию для такого критического ресурса?
  • Также есть вероятность, что выполнение метода не началось, даже если время ожидания достигнуто? Гарантирует ли это, что он будет назначать приоритет?

Спасибо