测试线程池

master
陈思豪 2024-09-08 20:51:15 +08:00
parent 09d553c3d8
commit c27ea00337
10 changed files with 225 additions and 5 deletions

View File

@ -0,0 +1,31 @@
package com.muyu.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @PackageName:com.muyu.domain
* @ClassName:NodeRule
* @Description:
* @author:
* @date: 2024/9/8 19:32
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "node_rule")
public class NodeRule {
@TableId(type = IdType.AUTO)
private Long id;
private Long nodeId;
private Long taskId;
private Long ruleId;
private String config;
}

View File

@ -0,0 +1,16 @@
package com.muyu.domain.basic;
/**
* @PackageName:com.muyu.domain.basic
* @ClassName:BasicTask
* @Description:
* @author:
* @date: 2024/9/8 19:15
*/
public interface BasicTask<T> {
void set(T dataValue);
<T> T get();
}

View File

@ -0,0 +1,22 @@
package com.muyu.domain.basic.abstracts;
import com.muyu.domain.basic.BasicTask;
/**
* @PackageName:com.muyu.domain.basic.abstracts
* @ClassName:DataTaskAbstracts
* @Description:
* @author:
* @date: 2024/9/8 19:18
*/
public class DataTaskAbstracts implements BasicTask {
@Override
public void set(Object dataValue) {
}
@Override
public Object get() {
return null;
}
}

View File

@ -0,0 +1,26 @@
package com.muyu.domain.basic.abstracts;
/**
* @PackageName:com.muyu.domain.basic.abstracts
* @ClassName:DataTaskAbstracts
* @Description:
* @author:
* @date: 2024/9/8 19:18
*/
public class DataTaskHandler {
private static final ThreadLocal<Object> threadLocal = new ThreadLocal<>();
public static void set(final Object dataValue) {
threadLocal.set(dataValue);
}
public static <T> T get() {
return (T) threadLocal.get();
}
public static void remove(){
threadLocal.remove();
}
}

View File

@ -0,0 +1,26 @@
package com.muyu.domain.basic.abstracts;
import com.muyu.domain.DataValue;
/**
* @PackageName:com.muyu.domain.basic.abstracts
* @ClassName:DataTaskAbstracts
* @Description:
* @author:
* @date: 2024/9/8 19:18
*/
public class DataTaskHandlerRowHandler {
public DataTaskHandlerRowHandler() {
}
public static void set(DataValue[] dataValue) {
DataTaskHandler.set(dataValue);
}
public static DataValue[] get() {
return (DataValue[])DataTaskHandler.get();
}
}

View File

@ -0,0 +1,26 @@
package com.muyu.domain.basic.abstracts;
import com.muyu.domain.DataValue;
/**
* @PackageName:com.muyu.domain.basic.abstracts
* @ClassName:DataTaskAbstracts
* @Description:
* @author:
* @date: 2024/9/8 19:18
*/
public class DataTaskValueHandler {
public DataTaskValueHandler() {
}
public static void set(DataValue dataValue) {
DataTaskHandler.set(dataValue);
}
public static DataValue get() {
return (DataValue)DataTaskHandler.get();
}
}

View File

@ -0,0 +1,44 @@
package com.muyu.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.muyu.common.core.domain.Result;
import com.muyu.domain.NodeRule;
import com.muyu.service.NodeRuleService;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import static java.nio.file.Files.delete;
/**
* @PackageName:com.muyu.controller
* @ClassName:NodeRuleController
* @Description:
* @author:
* @date: 2024/9/8 19:35
*/
@RestController
@RequestMapping("/nodeRule")
public class NodeRuleController {
@Autowired
private NodeRuleService nodeRuleService;
@RequestMapping(path = "/addNodeRule", method = RequestMethod.POST)
@Operation(summary = "添加任务", description = "根据传来的数据进行任务添加")
public Result<String> addTask(@RequestBody NodeRule nodeRule) {
QueryWrapper<NodeRule> wrapper = new QueryWrapper<>();
wrapper.eq("node_id", nodeRule.getNodeId());
wrapper.eq("task_id", nodeRule.getId());
nodeRuleService.remove(wrapper);
boolean save = nodeRuleService.save(nodeRule);
if(!save){
throw new RuntimeException("失败");
}
return Result.success(null,"成功");
}
}

View File

@ -0,0 +1,9 @@
package com.muyu.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.domain.NodeRule;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface NodeRuleMapper extends BaseMapper<NodeRule> {
}

View File

@ -0,0 +1,7 @@
package com.muyu.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.domain.NodeRule;
public interface NodeRuleService extends IService<NodeRule> {
}

View File

@ -7,10 +7,7 @@ import com.muyu.common.core.utils.StringUtils;
import com.muyu.domain.*;
import com.muyu.domain.req.TaskInfoReq;
import com.muyu.mapper.TaskMapper;
import com.muyu.service.TaskInputService;
import com.muyu.service.TaskJoinService;
import com.muyu.service.TaskOutputService;
import com.muyu.service.TaskService;
import com.muyu.service.*;
import com.muyu.task.feign.DataValueClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
@ -19,6 +16,7 @@ import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import static com.muyu.task.PriorityThreadPool.*;
@ -162,7 +160,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, TaskInfo> implement
}
}else{
LambdaQueryWrapper<TaskInputInfo> selectOne = new LambdaQueryWrapper<>();
queryWrapper.eq(TaskInputInfo::getTaskId, taskId);
selectOne.eq(TaskInputInfo::getTaskId, taskId);
TaskInputInfo taskInputInfo = taskInputService.getOne(selectOne);
leftJoin += taskInputInfo.getTableName() + " " + taskInputInfo.getTableAsName();
}
@ -263,6 +261,9 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, TaskInfo> implement
}
// static class Worker implements Runnable {
// private final PriorityBlockingQueue<SegmentTask> queue;
//
@ -344,4 +345,16 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, TaskInfo> implement
// }
// }
}
@Autowired
private NodeRuleService nodeRuleService;
// @Autowired
// private RuleFeign ruleFeign;
// public static Map<String, BasicEngine<DataValue>> engineMap = new ConcurrentHashMap<>();
// public static Map<String, BasicEngine<DataValue[]>> engineRowMap = new ConcurrentHashMap<>();
// public static Map<String, BasicEngine<DataValue[][]>> engineDataSetMap = new ConcurrentHashMap<>();
}