Я проектирую многопоточный конвейер данных, который опирается на службу A, я следую за проектированием производителя-потребителя, чтобы обработать список объектов. где мой производитель называет API службы B для получения задач для каждого объекта (может быть миллионы задач на объект), а потребитель обрабатывает задачи и публикует его на службу c. < /p>
Мой вопрос Именно как мне спроектировать это, чтобы, когда любая услуга B опускается (производитель не может получить задачи), либо сервис C спускается (потребитель не может обрабатывать задачи), я могу изящно остановиться и сохранить свой прогресс.
Я не могу сначала сохранить все свои задачи внутри блокировки, потому что это было бы слишком много задач, чтобы справиться с памятью. Задачи внутри БД, но тогда это резко замедлило бы мой трубопровод, так как теперь он должен выполнять операции записи/чтения. Кроме того, разве я не будет пустой тратой места БД, если бы я хранил миллионы задач, которые мне когда -либо нужно было обработать только один раз? Мне придется удалить их все из БД после завершения обработки, так что это кажется тратой усилий почти?
Подробнее здесь: https://stackoverflow.com/questions/794 ... d-pipeline
Как потерпеть неудачу при обработке задач с многопоточным трубопроводом ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение