Как мой дизайн должен обрабатывать массовую загрузку CSV - PullRequest
0 голосов
/ 09 мая 2019

У меня есть недостаток в архитектуре, поэтому я хочу это убрать.

Постановка проблемы: у меня есть CSV для массовой загрузки, который содержит 100 или более строк, эти строки добавляются в sqs (не по порядку) для использования и попадания в API, а также получения ответа и сохранения его в mysql DB, в случае неудачи Затем он отправляет почту для каждого сбоя API.

Но я хочу, чтобы вместо 100 писем было отправлено одно письмо с ошибкой API

1 Ответ

0 голосов
/ 09 мая 2019

Вам нужно найти способ отследить обработку сотого ряда (задания), чтобы вы могли наконец выполнить задачу «отправить письмо». Вы можете добиться этого следующим образом

Ведение одной записи в новой таблице MYSQL с столбцами sucess_apis, fault_apis, total_apis и no_apis_completed

После обработки каждого задания (строки) потребителем SQS, увеличивайте счетчики no_apis_completed, счетчик sucess_apis (при успехе), счетчик fail_apis (если не удалось) на один

Перед обработкой любого задания извлеките значение столбца no_apis_completed, и если текущее задание на обработку является 100-м, вы можете отправлять электронные письма ИЛИ вы также можете добавить запись в очередь SQS с другим именем задачи, а затем вы можете иметь модуль в приемнике SQS для выполнения действия «отправить письмо» при получении задачи с типом отправки электронной почты

...