Я использую очередь задач для обновления определенных данных в GAE.
Мой файл queue.xml выглядит следующим образом:
<queue>
<name>data-processing</name>
<rate>20/s</rate>
</queue>
Мой сервлет обработки очереди уменьшает кредит на 1 для каждой задачи. При его обработке необходимо проверить наличие кредита и продолжить работу, только если кредит доступен.
Кредит хранится в таблице и обновляется после завершения задачи.
Я вижу задачи как потоки и беспокоюсь о проблеме синхронизации.
Что делать, если две или более задач запрашивают/обновляют кредитную таблицу одновременно? Нужно ли мне создавать какой-то механизм блокировки? Если да, то как?