|
|
@ -7,6 +7,7 @@ import com.xxl.job.admin.dao.XxlJobMachineDao;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
|
@ -18,6 +19,9 @@ public class MachineServiceImpl implements MachineService {
|
|
|
|
|
|
|
|
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(MachineServiceImpl.class);
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(MachineServiceImpl.class);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${server.port}")
|
|
|
|
|
|
|
|
private String serverPort;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private XxlJobMachineDao xxlJobMachineDao;
|
|
|
|
private XxlJobMachineDao xxlJobMachineDao;
|
|
|
|
|
|
|
|
|
|
|
@ -43,37 +47,43 @@ public class MachineServiceImpl implements MachineService {
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Integer getInitMachineId() {
|
|
|
|
public Integer getInitMachineId() {
|
|
|
|
XxlJobMachine xxlJobMachine = selectByMachineIp(MachineUtils.getIP());
|
|
|
|
String ipStr = MachineUtils.getIPAndPort(serverPort);
|
|
|
|
|
|
|
|
XxlJobMachine xxlJobMachine = selectByMachineIp(ipStr);
|
|
|
|
Date nowDate = new Date();
|
|
|
|
Date nowDate = new Date();
|
|
|
|
int machineId = -1;
|
|
|
|
int machineId = -1;
|
|
|
|
if(xxlJobMachine != null){
|
|
|
|
if(xxlJobMachine != null){
|
|
|
|
update(MachineUtils.getIP(),nowDate);
|
|
|
|
update(ipStr,nowDate);
|
|
|
|
machineId = xxlJobMachine.getMachineId();
|
|
|
|
machineId = xxlJobMachine.getMachineId();
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
xxlJobMachine = new XxlJobMachine();
|
|
|
|
xxlJobMachine = new XxlJobMachine();
|
|
|
|
xxlJobMachine.setMachineIp(MachineUtils.getIP());
|
|
|
|
xxlJobMachine.setMachineIp(ipStr);
|
|
|
|
xxlJobMachine.setAddTime(nowDate);
|
|
|
|
xxlJobMachine.setAddTime(nowDate);
|
|
|
|
xxlJobMachine.setHeartLastTime(nowDate);
|
|
|
|
xxlJobMachine.setHeartLastTime(nowDate);
|
|
|
|
Random random = new Random();
|
|
|
|
Random random = new Random();
|
|
|
|
|
|
|
|
boolean flag = false;
|
|
|
|
for(int i = 0; i < 100; i++){
|
|
|
|
for(int i = 0; i < 100; i++){
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
Integer value = selectMaxMachineId();
|
|
|
|
Integer value = selectMaxMachineId();
|
|
|
|
machineId = value == null ? 1 : value+1;
|
|
|
|
machineId = value == null ? 1 : value+1;
|
|
|
|
xxlJobMachine.setMachineId(machineId);
|
|
|
|
xxlJobMachine.setMachineId(machineId);
|
|
|
|
save(xxlJobMachine);
|
|
|
|
save(xxlJobMachine);
|
|
|
|
|
|
|
|
flag = true;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
} catch (DuplicateKeyException e) {
|
|
|
|
} catch (DuplicateKeyException e) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
Thread.sleep(random.nextInt(1000)+1);
|
|
|
|
Thread.sleep(random.nextInt(2000)+1);
|
|
|
|
} catch (InterruptedException interruptedException) {
|
|
|
|
} catch (InterruptedException interruptedException) {
|
|
|
|
logger.error("sleep error,cause:",interruptedException);
|
|
|
|
logger.error("sleep error,cause:",interruptedException);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
logger.error("retry >>>>>>>>>>>>> ");
|
|
|
|
logger.error("retry >>>>>>>>>>>>> ");
|
|
|
|
} catch (Exception e){
|
|
|
|
} catch (Exception e){
|
|
|
|
logger.error("save error >>>>>>,system exit,cause:",e);
|
|
|
|
logger.error("save error >>>>>>,system exit,cause:",e);
|
|
|
|
System.exit(0);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!flag) {
|
|
|
|
|
|
|
|
logger.error("多次获取machineId失败,退出程序");
|
|
|
|
|
|
|
|
System.exit(0);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return machineId;
|
|
|
|
return machineId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|