vitya_brodov
@vitya_brodov
Java dev

Как спроектировать API, чтобы избежать ошибку 504 Gate away?

Здравствуйте, у меня есть API написанный на Java Spring boot, который принимает в вход .XLSX файл и парсит данные внутри цикла в лист объектов.
При каждом итерации цикла используя WebClient стучится с параметром в сторонний API с БД и получает некие данные обратно, Затем записывает все спарсенные данные в файл и выдает обратно.
Проблема в том что, Из-за больших обращений в сторонний API, программа работает слишком долго(5-7 минут) при запуске на прод получаю 504 Gate away.
Вопрос: Как можно оптимизировать или грамотно спроектировать, чтобы избежать выше описанную проблему?
Есть мысли использовать асихронность или многопоточность, но не уверен что это решение проблемы.
Прошу Вас поделится мудростью.
  • Вопрос задан
  • 141 просмотр
Решения вопроса 2
@Akela_wolf
Extreme Programmer
Если вас тормозит именно внешний API и этот API нормально выдержит большое количество одновременных запросов - то асинхронность более чем поможет. Рекомендую посмотреть Webflux и/или корутины на котлине.
Ответ написан
Комментировать
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Проблема в том что, Из-за больших обращений в сторонний API, программа работает слишком долго(5-7 минут) при запуске на прод получаю 504 Gate away.

Посмотрите в сторону WebFlux. В частности, можно использовать Flux<>

При каждом итерации цикла используя WebClient стучится с параметром в сторонний API с БД и получает некие данные обратно.

Есть ли возможность доработать сторонний API? Т.е. принадлежит ли он вам? Если да, то можете добавить доп. контроллер, который позволит массово обрабатывать запросы, тем самым уменьшив кол-во запросов с n до 1.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы