Например, у нас есть очередь задач, которые обрабатывают число и 2 потребителя:
|-> c1
[5,4,3,2,1] -
|-> c2
Когда сообщение используется, скажем, оно выполняет некоторое асинхронное действие, такое как обновление числа в базе данных.
my_number_table
---
number(int)
Если потребитель 1 получает задачу 1 и начинает обновлять строку в базе данных, а потребитель 2 получает задачу 2 и начинает обновлять ту же строку в базе данных, не блокируется ли база данных?
Полагаю, я бы хотел, чтобы задача 2 не была подхвачена каким-либо потребителем до тех пор, пока задача 1 не будет выполнена и номер не будет успешно сохранен в базе данных.