Представьте, что есть две сущности Children
и Gifts
.Допустим, есть 1000 детей и 10 подарков.Дети всегда будут пытаться захватить имеющиеся подарки, и подарки будут помечаться для детей по принципу «первым пришел - первым обслужен».
Структура таблицы
children
таблица
+----+------+
| id | name |
+----+------+
| 1 | Sam |
| 2 | John |
| 3 | Sara |
+----+------+
gift
таблица
+----+---------+-------------+
| id | gift | children_id |
+----+---------+-------------+
| 1 | Toy Car | 2 |
| 2 | Doll | 3 |
+----+---------+-------------+
Здесь children_id
- это ребенок, которого схватилисначала подарок.
В моем приложении я хочу обновить children_id
таким образом, чтобы только первый ребенок, инициировавший запрос, получил его, а остальные получили GiftUnavailableException
.
Как я могу гарантировать, что, даже если за один раз приходит 1000 запросов на получение определенного подарка, только первый получит его.Или как я могу убедиться, что в этом обновлении нет условий гонки.
Есть ли какая-либо особенность пружины, которую я могу использовать, или есть какие-либо другие способы.
Я используюпружинный ботинок как мой бэкэнд.