rev:添加锁:保障wms申请任务时只有一个
This commit is contained in:
@@ -14,6 +14,7 @@ import org.nl.acs.ext.wms.data.CreateTaskRequest;
|
||||
import org.nl.acs.ext.wms.data.CreateTaskResponse;
|
||||
import org.nl.acs.ext.wms.service.WmsToAcsService;
|
||||
//import org.nl.modules.logging.InterfaceLogType;
|
||||
import org.nl.acs.utils.LockUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -38,28 +39,13 @@ import java.util.concurrent.locks.ReentrantLock;
|
||||
@Slf4j
|
||||
public class WmsToAcsController {
|
||||
private final WmsToAcsService wmstoacsService;
|
||||
private ReentrantLock lock = new ReentrantLock();
|
||||
|
||||
@PostMapping("/task")
|
||||
@Log(value = "ACS接收WMS任务")
|
||||
@ApiOperation("接收WMS任务")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> createFromWms(@RequestBody List<CreateTaskRequest> reqs) {
|
||||
CreateTaskResponse response = new CreateTaskResponse();
|
||||
try {
|
||||
if (lock.tryLock() || lock.tryLock(2, TimeUnit.SECONDS)){
|
||||
response = wmstoacsService.crateTask(reqs);
|
||||
Thread.sleep(50000);
|
||||
}else {
|
||||
throw new BadRequestException("当前acs正在执行创建任务稍后再试");
|
||||
}
|
||||
}catch (Exception ex){
|
||||
throw new BadRequestException("当前acs正在执行创建任务稍后再试");
|
||||
}finally {
|
||||
if (lock.isHeldByCurrentThread() && lock.isLocked()){
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
CreateTaskResponse response = LockUtils.lock("apply", () -> wmstoacsService.crateTask(reqs), 3);
|
||||
return new ResponseEntity<>(response, HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user