Я планирую иметь большую коллекцию, содержащую предметы, которые должны быть обработаны заданием Quartz / cron. Таким образом, задание cron будет запускаться периодически и получать доступ к mongodb, чтобы найти 5 самых старых элементов и обработать их.
Это будет нормально для одного сервера, на котором выполняется задание cron. Но позже, если я запустил 2 сервера, на каждом из которых выполняется одно и то же задание cron, я боюсь, что задания с 2 cron могут выполняться одновременно и получить 5 одинаковых элементов, что может привести к проблемам с состоянием гонки.
Как лучше всего избегать этой проблемы?
Я думаю о том, чтобы поместить логику в каждое задание, чтобы получить 5 самых старых элементов, которые имеют статус ОЖИДАНИЯ, а затем немедленно изменить состояние на ОБРАБОТАНО, чтобы другие задания не могли их обработать. Как вы думаете, это будет работать?