Spring 控制器连接终止(即客户端超时)后的事务回滚
描绘场景; 我有一个移动应用程序,它从Spring管理的服务器中提取20美元,并在应用程序上标记完成之前等待确认 但是,Spring 控制器连接终止(即客户端超时)后的事务回滚,spring,transactions,Spring,Transactions,描绘场景; 我有一个移动应用程序,它从Spring管理的服务器中提取20美元,并在应用程序上标记完成之前等待确认 但是, 移动应用程序向服务器发送撤销请求 控制器接收到请求并调用服务器层,说明服务层提取资金通常需要多长时间(原因不重要) 移动应用程序超时(带有SocketException),请求将重新排队,直到它可以再次与应用程序通话 服务器完成了来自1的请求,但不知道客户端已超时 我们现在的场景是,移动应用程序认为20美元失败了,但服务器执行了请求 所以问题就来了, •当套接字关闭时(即当移
- 移动应用程序发送某种令牌/uuid,用于标识取款
- 如果请求超时,移动应用程序会在内部将退出标记为某种“未知结果”状态,而不是重新安排,移动应用程序可以使用令牌向服务器询问状态
- “未知结果”应仅在一段时间内有效(例如5分钟),否则应假设退出无效并重新安排
- 服务器上的事务也应该有一个超时(并且满足“未知结果”的时间)
希望能有所帮助。我不知道Spring(所以这是一个评论,不是一个答案)-但是关于第二点,你可以使用2PC.@todda.speot.is-谢谢;一个选择是的,但不是我喜欢的方法,因为它需要大量的架构更改来适应。。