Просто пихайте все в очередь. Затем два пути:
1. Опрашиваем по таймеру. Каждые пять минут consumer подключается к очереди забирает все, что там есть и затем сохраняет в базу весь этот batch.
2. Consumer берет из очереди по N сообщений, и вставляет в базу batch.
И там и там есть гибкость. Сегодня каждые пять минут, а в вечер пятницы-субботы, когда условно нагрузки выше (HoReCa, Delivery-сегмент и прочее), можно изменить на каждые три минуты. Тоже самое и по сообщениям. Сегодня N = 10, а завтра N = 50.