java – Spring MVC中的同步方法
我试图在spring控制器中使用synchronize方法.因为我们的支付网关点击方法[@RequestMapping(value =“/ pay”,method = RequestMethod.POST)]不同的交易[txn id:txn01& txn02]一次.但由于使用了同步块,这两个不同的事务处理逐个并行处理. 问题 – >为什么我在控制器中使用同步块就是说,事务[txn01]点击[@RequestMapping(value =“/ pay”,method = RequestMethod.POST)]两次,就像来自支付网关的重复呼叫一样.在完成第一次呼叫[后端处理]之前,我从支付网关获得相同转账的第二次呼叫. 有没有办法处理两个不同的事务并行使用同步块中的事务ID而不是重复调用我的意思是相同的转义.请指教. 如果我的问题不清楚,请告诉我.
修改后的代码 在同步块中使用实习生是否正确?
最佳答案
我不确定您是否在分布式环境中工作.
如果只有一台计算机,则可以删除同步关键字,并使用您的转换ID创建name-based锁. 如果这个程序在一个集群中工作,并且有多台机器,这意味着请求可能被分配给不同的机器,我认为你需要使用Redis或其他框架的aquaire distribution-lock. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |