基于缓存机制:
@RequestMapping("/transferOut/success")
public @ResponseBody Map<String, Object> outResult(HttpServletRequest request, HttpServletResponse response,
@RequestParam("amount") String amount, @RequestParam("bankcardno") String bankcardno,
@RequestParam("aesTranPwd") String aesTranPwd) throws Exception {
return transferout(request, amount, bankcardno, aesTranPwd);
}
private synchronized Map<String, Object> transferout(HttpServletRequest request, String amount, String bankcardno,
String aesTranPwd) throws Exception {
MemcachedCacheManager memcachedCacheManager = new MemcachedCacheManager();
MemcachedClient mc = memcachedCacheManager.getMemcachedClient();
if (mc.add("superbankTransferLock", 5, "a")) {// 添加时长2s的锁
//处理业务逻辑 ,处理完成之后将superbankTransferLock删除,处理下一个请求
map.put("status", stat);
map.put("respmsg", respmsg);
mc.delete("superbankTransferLock");
return map;
}else {
Thread.sleep(500);
return transferout(request, amount, bankcardno, aesTranPwd);
}