Я смотрел на что-то очень похожее, где я работаю. Во-первых, вы действительно хотите, чтобы данные, отправляемые в ваш API-интерфейс, были как можно меньшего размера, чтобы отправка всех этих событий не использовалась с большой пропускной способностью. Следующим, что мы поняли, было использование какой-либо очереди, RabbitMQ, Azure Service Bus, MSMQ или Amazon SQS или чего-то подобного.
Конечная точка API должна просто взять данные и поместить их в очередь. Затем найдите другую программу или службу, которая затем читает сообщения в очереди в своем собственном темпе и выполняет любые вставки в базы данных.
В пиковые периоды времени вы не должны видеть никакого снижения производительности от API, единственное, что произойдет, когда ваша система будет взломана, - это то, что данные могут занять от нескольких секунд до нескольких минут для вставки в DB.
По сути, вы выполняете пакетирование в очереди и вам не нужно беспокоиться о пакетировании на стороне клиента