Commit 7ff0d8f0 by guominglei

杀死立即运行节点接口

parent 5fb41210
...@@ -33,6 +33,13 @@ public class ApiNodeController { ...@@ -33,6 +33,13 @@ public class ApiNodeController {
return monitorKey; return monitorKey;
} }
@PostMapping("killNode")
public String killNode(Integer logId){
log.info("----------=--killNode方法接收到参数为:{}--------------",logId);
apiNodeService.killNode(logId);
return "SUCCESS";
}
@PostMapping("runHistory") @PostMapping("runHistory")
public ResponseResult runHistory(String nodeId){ public ResponseResult runHistory(String nodeId){
......
...@@ -97,4 +97,6 @@ public interface ApiNodeService { ...@@ -97,4 +97,6 @@ public interface ApiNodeService {
* @return * @return
*/ */
Map<String, JobTaskRunLog> loadCurrentStatusByJobName(String jobNames); Map<String, JobTaskRunLog> loadCurrentStatusByJobName(String jobNames);
void killNode(Integer logId);
} }
package com.byit.service.impl; package com.byit.service.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.byit.dto.plugin.JavaTask; import com.byit.dto.plugin.JavaTask;
import com.byit.dto.plugin.RunLog; import com.byit.dto.plugin.RunLog;
import com.byit.dto.plugin.RunNode; import com.byit.dto.plugin.RunNode;
import com.byit.dto.web.ResponseResult;
import com.byit.enums.NodePropertyEnum; import com.byit.enums.NodePropertyEnum;
import com.byit.enums.PlaceholderEnum; import com.byit.enums.PlaceholderEnum;
import com.byit.enums.ScheduleTypeEnum; import com.byit.enums.ScheduleTypeEnum;
...@@ -24,6 +26,7 @@ import com.byit.task.ScriptExecutorJobTask; ...@@ -24,6 +26,7 @@ import com.byit.task.ScriptExecutorJobTask;
import com.byit.utils.ValidationUtil; import com.byit.utils.ValidationUtil;
import io.netty.util.TimerTask; import io.netty.util.TimerTask;
import lombok.ToString; import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
...@@ -42,6 +45,7 @@ import static com.alibaba.fastjson.serializer.SerializerFeature.WriteClassName; ...@@ -42,6 +45,7 @@ import static com.alibaba.fastjson.serializer.SerializerFeature.WriteClassName;
*/ */
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Slf4j
public class ApiNodeServiceImpl implements ApiNodeService { public class ApiNodeServiceImpl implements ApiNodeService {
@Resource @Resource
...@@ -111,11 +115,35 @@ public class ApiNodeServiceImpl implements ApiNodeService { ...@@ -111,11 +115,35 @@ public class ApiNodeServiceImpl implements ApiNodeService {
return runKey; return runKey;
} }
public static void main(String[] args) { @Override
String jat = "java -jar -Djava.security.egd=file:/dev/./urandom /ddmp/sqlEngine/ddmp-engine.jar {isReRun:false,jobId:5446,type:\"sql\",engineId:425,exterPath:\"/ddmp/sqlEngine\",storeType:\"redis\",contentKey:\"JOBCONTENT.5446.e8jC5STc\",tenant:0000,bizDate:\"${biz_date}\"}"; public void killNode(Integer logId) {
jat = jat.replace("${"+ PlaceholderEnum.DATE_PLACEHOLDER.getName() +"}", DateUtil.dateLessDayStr(new Date(),"yyyyMMdd",1)); JobTaskRunLog jobTaskRunLog = jobTaskRunLogMapper.findJobTaskRunLogByLogId(logId);
System.out.println(jat); if (StringUtils.isEmpty(jobTaskRunLog.getJobGroupIp())){
log.warn("已经调度成功但是还未返回具体的调用机器的ip地址");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
jobTaskRunLog = jobTaskRunLogMapper.findJobTaskRunLogByLogId(logId);
ValidationUtil.isTrueValidation(!"0".equals(jobTaskRunLog.getRunCode()), "该任务已经运行结束!");
ValidationUtil.dataNotBank(jobTaskRunLog.getJobGroupIp(), "尚未分配执行机请稍后再试");
}
killJob(jobTaskRunLog.getLogId(), jobTaskRunLog.getJobGroupIp());
log.info("杀死成功!");
}
private synchronized Boolean killJob(Integer logId, String exectUrl){
//具体访问的URL
String killUrl = "http://" + exectUrl + "/myth-executor-server/processManager/killJob";
Map<String, Object> requestMap = new HashMap<>(2);
requestMap.put("logId", logId);
String killResult = HttpUtil.post(killUrl, requestMap);
log.info("请求结果{}", killResult);
ResponseResult responseResult = JSON.parseObject(killResult, ResponseResult.class);
ValidationUtil.isTrueValidation(!"SUCCESS".equals(responseResult.getResult()), "杀死job失败,错误信息为:" + responseResult.getResult());
return true;
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment