有一个负责手机号码充值的API。要使用充值API,首先用户应该注册,然后该阶段为用户分配一些信用(BALANCE)。
当使用手机号码和充值金额调用 API 时,该金额将从特定用户的帐户余额中扣除(更新余额)。
问题是当用户为 X 手机充值并同时再次为 Y 手机号码充值时。
使用 JAVA 和 MySQL(数据库)处理此类事务的最佳方法是什么。
最佳答案
您可以通过不同的方式来实现这一目标。
- 我认为最简单的方法是使用乐观的外观:https://www.baeldung.com/jpa-optimistic-locking
- 其他更复杂的方法是使用 Actor。它可能涉及应用程序架构的更改和要使用的新框架,但这绝对是有返回的。 Actor 接收事件(例如,BalanceUpdate)并确保按顺序处理所有消息,每个用户可以有一个 Actor,并且技巧是将与用户相关的所有消息根植于他的 Actor 。检查 Akka 或 Vert.X 等框架
关于java - 如何用Java处理mysql中的并发事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887457/