Я недавно изучал эту проблему, и мне было бы интересно узнать, есть ли другие способы иметь несколько читателей (потребителей), не полагаясь на атомарные обновления.
Это то, что я придумал: разделить вашу логику на два «модуля». Первый модуль будет отвечать за выборку новых документов из настраиваемого курсора. Второй модуль будет отвечать за работу с произвольным документом. Таким образом, у вас может быть только один потребитель (модуль один), извлекающий документы, который позже отправляет документ нескольким работникам документов (второй модуль).
Оба модуля могут быть реализованы в разных процессах и даже на разных языках. Например, приложение Node.js может извлекать документы и отправлять их в пул сценариев, написанных на Python, готовых к одновременной обработке документов.