У меня есть две коллекции: одна (A), содержащая элементы для обработки (относительно небольшие) и один ( B) с уже обработанными (довольно большими, с дополнительными поля результатов).
Элементы читаются с A, обрабатываются и сохраняются() 'd до B, а затем удаляются()' d из A.
Обоснование заключается в том, что индексы могут быть разными между ними и что "входящая" коллекция может храниться очень малой и быстрой таким образом.
Я столкнулся с двумя проблемами:
- если вы удаляете() или сохраняете() тайм-аут или иным образом терпите неудачу при загрузке, я полностью теряю элемент или обрабатываю его дважды
- если оба не работают, побочные эффекты происходят, но нет записи о том, что
Я могу обойти случай с двойным сбоем с помощью блокировок findAndModify (в противном случае не требуется блокировка на уровне процесса), но тогда у нас есть проблемы с устаревшим блокированием, и частичные сбои все еще могут произойти. Невозможно ли физически удалить + сохранить в разные коллекции, насколько я могу судить (может быть, по дизайну?)
Есть ли лучшая практика для этой ситуации?