Проблема с параллелизмом в Java Quartz / Cron Mongodb - PullRequest
0 голосов
/ 09 ноября 2018

Я планирую иметь большую коллекцию, содержащую предметы, которые должны быть обработаны заданием Quartz / cron. Таким образом, задание cron будет запускаться периодически и получать доступ к mongodb, чтобы найти 5 самых старых элементов и обработать их.

Это будет нормально для одного сервера, на котором выполняется задание cron. Но позже, если я запустил 2 сервера, на каждом из которых выполняется одно и то же задание cron, я боюсь, что задания с 2 cron могут выполняться одновременно и получить 5 одинаковых элементов, что может привести к проблемам с состоянием гонки.

Как лучше всего избегать этой проблемы?

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

1 Ответ

0 голосов
/ 09 ноября 2018

Та же проблема у меня возникла с использованием кварцевого планировщика. Вы должны задействовать базу данных. Я делюсь ссылкой GitHub, чтобы вы могли следовать указанному коду.

https://github.com/faizakram/Spring_MongoDb_Quartz_Cluster

Любые путаницы, пожалуйста, прокомментируйте, чтобы я мог лучше понять

Спасибо

...