У меня возникают трудности при разработке правильного способа импорта данных с использованием рабочих очередей.
У меня есть хранилище данных с файлами JSON, содержащими до 50 000 записей в каждой.Приложение должно позволять пользователю выбирать каталог и выполнять импорт записей 1 к 1 в другую базу данных с проверкой записей.Пользовательский интерфейс позволяет выбирать несколько каталогов.
Текущая реализация опирается на RabbitMQ и рабочих, которые выполняют следующее:
Пользовательский интерфейс отправляет запрос в API для отправки сообщения в очередь с идентификаторами каталога.Рабочие (приложения node.js) выполняют следующие действия:
- Получают сообщение
- Скачивают каталог
- Выполняют вставки с проверкой.
Такая обработка может занять довольно много времени для каждого каталога, и время обработки приводит к тому, что рабочий занят часами, занятыми одним сообщением.Каждый работник обрабатывает 1 сообщение за раз с ручным подтверждением в конце обработки.
Есть ли более эффективный способ обработки такого импорта?