Я создаю приложение, которое анализирует содержимое CSV на несколько «показаний». Затем он публикует эти показания на сервере API REST, где он добавляется в базу данных.Очереди для POST для API REST
Пока все хорошо (и выше работает). Тем не менее, я сознаю, что иногда могут возникать проблемы с подключением к серверу (задержки, или если API по какой-либо причине сходит).
Чтобы решить эту проблему, я планировал использовать Sidekiq для выполнения асинхронной передачи. Тем не менее, у меня есть несколько вопросов:
Am Я лучше от создания ActiveJob для выполнения поста, а затем просто очереди этой работы, когда CSV обрабатываются? Я предполагаю, что, если есть проблема с подключением, она в конечном итоге возобновится в том же порядке, в каком они добавлены?
Должен ли я сказать Sidekiq, чтобы «повторить» работу, или это произойдет просто автоматически?
Наконец, поскольку Sidekiq использует Redis, следует включить сохранение, чтобы при сбое сервера приложений, когда в очереди есть элементы, они не будут потеряны?
Есть ли еще что рассмотреть? Или лучший способ справиться с этим?
В CSV будет только 1-2 строки, каждый из которых имеет 15 значений, и они будут поступать каждые 5 минут. Итак, имея в виду, я полагаю, что я должен создать задание «post row» и обработать его для каждой строки, а не для «процесса CSV»? –
@JoeCzucha, да, я думаю, что это был бы лучший подход. Этот подход автоматически обрабатывает неудавшиеся задания и никогда не будет запускаться снова для успешно обработанной строки. –
Спасибо за советы. :) Мне нужно будет запустить задание CRON, чтобы автоматически начать передачу всего в очереди каждые n минут или автоматически будет Sidekiq возобновить очередь в случае сбоя/перезапуска приложения? –