Всё сложное - тупо!
©2020, xmoonlight
1. Сразу создаём пакетную обработку запросов с единым менеджером очередей.
2. Пакет - это несколько независимых запросов в единицу времени на чтение или запись.
3. Две очереди: чтение и запись.
4. Попеременно проверяем наличие пакета в каждой из очередей и пакет запросов исполняем асинхронно.
5. Динамически подстраиваем длину пакета в зависимости от типа запросов и приблизительной скорости их исполнения.
Profit!