Как спроектировать API, чтобы избежать ошибку 504 Gate away?
Здравствуйте, у меня есть API написанный на Java Spring boot, который принимает в вход .XLSX файл и парсит данные внутри цикла в лист объектов.
При каждом итерации цикла используя WebClient стучится с параметром в сторонний API с БД и получает некие данные обратно, Затем записывает все спарсенные данные в файл и выдает обратно.
Проблема в том что, Из-за больших обращений в сторонний API, программа работает слишком долго(5-7 минут) при запуске на прод получаю 504 Gate away.
Вопрос: Как можно оптимизировать или грамотно спроектировать, чтобы избежать выше описанную проблему?
Есть мысли использовать асихронность или многопоточность, но не уверен что это решение проблемы.
Прошу Вас поделится мудростью.
Если вас тормозит именно внешний API и этот API нормально выдержит большое количество одновременных запросов - то асинхронность более чем поможет. Рекомендую посмотреть Webflux и/или корутины на котлине.
Проблема в том что, Из-за больших обращений в сторонний API, программа работает слишком долго(5-7 минут) при запуске на прод получаю 504 Gate away.
Посмотрите в сторону WebFlux. В частности, можно использовать Flux<>
При каждом итерации цикла используя WebClient стучится с параметром в сторонний API с БД и получает некие данные обратно.
Есть ли возможность доработать сторонний API? Т.е. принадлежит ли он вам? Если да, то можете добавить доп. контроллер, который позволит массово обрабатывать запросы, тем самым уменьшив кол-во запросов с n до 1.