Как грамотно распараллелить потоки для сложного запроса?
Есть несколько микросервисов. Например, сервис user-account: на этапе выполнения метода удаления юзера выполняется еще 4 запроса на другие сервисы с целью вычистить его следы из всех связанных баз.
Конечно, это делает выполнение долгим.
Вопрос: достаточно ли внутри запроса removeUser каждый из внутренних запросов @Async с возвратом future? А в application добавить бин taskExecutor, установив большое количество потоков в пуле?
Уточню, что метод removeUser должен дожидаться ответов из внешних баз, прежде чем фронт сможет получить его статус код. То есть нужно знать точно, что все почищено, а не в процессе.
Или есть какие-то более грамотные методы реализации этой цели?
Nastya1920, тут не помогу, не знаю как в джаве устроено.
Можно погуглить на эту тему, суть в том, что при удалении юзера, будут удаляться автоматически все связанные записи в других таблицах.
yuopi, аа, вы, наверно, имеете ввиду реализованную опцию cascadeType с hibernate. Проблема в том, что это удобно, если сервис монолитный, и все связанные данные лежат в таблицах в одном репозитории (насколько я знаю - может, ошибаюсь). В моем случае это 2 разных кластера Монго, Эластик - и все сидят в разных сервисах. То есть, по идее, это должен быть настраиваемый каскад реквестов. По сути, наверно, именно это можно сделать с async. Но метод- оболочка все равно синхронный, ибо фронт точно должен знать, что все почищено, то есть получить респонс.