Как обрабатывать одновременные транзакции в MySQL с Java? - PullRequest
0 голосов
/ 19 октября 2018

Есть API, который отвечает за пополнение мобильных номеров.Чтобы использовать API пополнения счета, сначала пользователь должен зарегистрироваться, и на этом этапе ему будет выделен некоторый кредит (BALANCE).

Когда вы звоните в API с номером мобильного телефона и суммой пополнения, эта сумма будет вычтена избаланс учетной записи конкретного пользователя (Обновление баланса).

Проблема заключается в том, что пользователь пополняет счет X мобильным и снова одновременно Y номер мобильного телефона.

Каковы наилучшие способы обработки таких транзакций с JAVA и MySQL (база данных).

1 Ответ

0 голосов
/ 19 октября 2018

У вас есть разные способы достичь этого.

  • Самым простым, на мой взгляд, является использование оптимистичного взгляда: https://www.baeldung.com/jpa-optimistic-locking
  • Другим более сложным способом является использование актеров.Вероятно, это связано с изменением архитектуры вашего приложения и использованием новых фреймворков, но это определенно окупается.Актер получает события (например, BalanceUpdate) и гарантирует, что все сообщения обрабатываются по порядку, у вас может быть актер для каждого пользователя, и хитрость делается, рутируя все сообщения, относящиеся к пользователю, к его актеру.Проверьте рамки, такие как Akka или Vert.X
...