Допустим, у меня есть таблица в хранилище таблиц Azure.
public class MyTable
{
public string PK {get; set;}
public string RowPK {get; set;}
public double Amount {get; set;}
}
И сообщение в очереди Azure с текстом Добавить 10 к сумме.
Теперь допустим одна рабочая роль
- Берет это сообщение из очереди
- Берет строку из таблицы
- Сумма += 10
- Обновляет строку в таблице
- И терпит неудачу
Через некоторое время сообщение снова доступно в очереди. Итак, следующая рабочая роль:
- Берет это сообщение из очереди
- Берет строку из таблицы
- Сумма += 10
- Обновляет строку в таблице
- Удаляет сообщение из очереди
Эти действия приводят к Amount += 20
вместо Amount += 10
.
Как мне избежать таких ситуаций?