gpt4 book ai didi

java - 防止 play2.1 应用程序同时发生数据库事务

转载 作者:行者123 更新时间:2023-11-29 06:48:40 25 4
gpt4 key购买 nike

我今天遇到了一个与我们的支付流程有关的严重问题。
付款完成后,会发生两件事:

  • 用户被重定向到我们服务器上的成功页面,重定向还会附加支付 ID
  • 支付提供商向我们的服务器发送包含支付 ID 的支付通知

当用户被重定向到成功页面时,我们检查是否存在具有付款 ID 的付款。如果不是这种情况,我们会创建一个pending 付款,我们可以向他展示。

当支付提供商发送支付通知时,我们检查是否存在带有支付 ID 的pending 支付,并将其设置为active,如果不存在支付,我们就创建一个活跃的

这就是问题所在:这两个事件可以(并且确实发生了!)同时发生,因此两个例程都没有找到现有的付款,因此创建了两个付款。一个 pending 和一个 active

是否有可能通过使用锁或其他东西来规避这种行为的好方法?我在带有 MySQL 数据库的基于 Java 的 play 2.1.0 上使用默认的 Ebean ORM。

最佳答案

这根本不是玩游戏的东西。我的建议是不要使用锁。如果这样做,您将限制应用程序的可扩展性。

您需要处理这种竞争情况。竞争条件总是会发生,您无能为力。所以,拥抱他们吧。

在您描述的实例中,如果数据库中存在两种状态,则它听起来像是挂起状态应该被 Activity 状态覆盖。

关于java - 防止 play2.1 应用程序同时发生数据库事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16945105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com