В принципе, подойдёт любое решение.
Главное - это реализация очереди обработки.
При входящих запросах их нужно делить на зависимые и независимые и распределять по приоритетам.
Нужен каскад из двух последовательных типов очередей:
1. Внешний - последовательная обработка зависимых запросов (от одного или нескольких клиентов). Т.е., постановка в асинхронную очередь.
2. Внутренний - асинхронная и пакетная (один запрос к бд сразу для нескольких внешних запросов!) обработка параллельных независимых внешних запросов.
Таким образом, значительно снизится время ответа при высоких нагрузках к API (при большом количестве параллельных запросов в единицу времени).