add:redisson

This commit is contained in:
zhangzhiqiang
2023-02-06 10:00:44 +08:00
parent 669821f526
commit acae1ade0d

View File

@@ -28,6 +28,8 @@ import org.nl.wms.sch.tasks.EmptyVehicleTask;
import org.nl.wms.sch.tasks.SendOutTask; import org.nl.wms.sch.tasks.SendOutTask;
import org.nl.wms.st.inbill.service.RawAssistIStorService; import org.nl.wms.st.inbill.service.RawAssistIStorService;
import org.nl.wms.st.inbill.service.StorPublicService; import org.nl.wms.st.inbill.service.StorPublicService;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -44,7 +46,7 @@ import java.util.concurrent.TimeUnit;
@Slf4j @Slf4j
public class AcsToWmsServiceImpl implements AcsToWmsService { public class AcsToWmsServiceImpl implements AcsToWmsService {
private static Interner<String> lock = Interners.newWeakInterner(); private static Interner<String> Heap_Lock = Interners.newWeakInterner();
private final PrintService printService; private final PrintService printService;
@@ -55,7 +57,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private final CutConveyorTask cutConveyorTask; private final CutConveyorTask cutConveyorTask;
// private final RedissonClient redissonClient; private final RedissonClient redissonClient;
/** /**
* task_id任务标识 * task_id任务标识
@@ -194,8 +196,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
log.info("apply请求参数---------------------------------------------"+whereJson.toString()); log.info("apply请求参数---------------------------------------------"+whereJson.toString());
String type = whereJson.getString("type"); String type = whereJson.getString("type");
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
synchronized (lock.intern(type)){ RLock lock = redissonClient.getLock("acs_to_wms:" + type);
{ boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
try {
if (tryLock){
String device_code = whereJson.getString("device_code"); String device_code = whereJson.getString("device_code");
String vehicle_code = whereJson.getString("vehicle_code"); String vehicle_code = whereJson.getString("vehicle_code");
WQLObject point_table = WQLObject.getWQLObject("SCH_BASE_Point"); WQLObject point_table = WQLObject.getWQLObject("SCH_BASE_Point");
@@ -444,8 +448,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.put("message", "下发成功!"); result.put("message", "下发成功!");
return result; return result;
} }
}finally {
if (tryLock){
lock.unlock();
} }
}
result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "申请任务超时!"+type);
return result;
} }
@Override @Override