1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
@RestController @RequestMapping("/api/v1/thread-pool-task-executor") public class ThreadPoolTaskExecutorController { @Autowired private ThreadPoolTaskExecutorManager taskExecutorManager; @Autowired private AsyncTaskExecutionService asyncTaskExecutionService; @Autowired private TaskSchedulingService taskSchedulingService;
@PostMapping("/create") public ResponseEntity<Map<String, Object>> createTaskExecutor(@RequestBody TaskExecutorRequest request) { try { ThreadPoolTaskExecutor executor = taskExecutorManager.createTaskExecutor(request.getExecutorName()); Map<String, Object> response = new HashMap<>(); response.put("success", true); response.put("message", "任务执行器创建成功"); response.put("executorName", request.getExecutorName()); return ResponseEntity.ok(response); } catch (Exception e) { log.error("创建任务执行器失败", e); Map<String, Object> response = new HashMap<>(); response.put("success", false); response.put("message", "创建任务执行器失败: " + e.getMessage()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); } }
@PostMapping("/execute-async") public ResponseEntity<Map<String, Object>> executeAsyncTask(@RequestBody AsyncTaskRequest request) { try { CompletableFuture<String> future = asyncTaskExecutionService.executeAsyncTask( request.getTaskName(), request.getDuration()); Map<String, Object> response = new HashMap<>(); response.put("success", true); response.put("message", "异步任务提交成功"); response.put("taskName", request.getTaskName()); return ResponseEntity.ok(response); } catch (Exception e) { log.error("执行异步任务失败", e); Map<String, Object> response = new HashMap<>(); response.put("success", false); response.put("message", "执行异步任务失败: " + e.getMessage()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); } }
@GetMapping("/status") public ResponseEntity<Map<String, Object>> getTaskExecutorStatus(@RequestParam String executorName) { try { TaskExecutorStatus status = taskExecutorManager.getTaskExecutorStatus(executorName); Map<String, Object> response = new HashMap<>(); response.put("success", true); response.put("status", status); return ResponseEntity.ok(response); } catch (Exception e) { log.error("获取任务执行器状态失败", e); Map<String, Object> response = new HashMap<>(); response.put("success", false); response.put("message", "获取任务执行器状态失败: " + e.getMessage()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); } }
@PostMapping("/schedule") public ResponseEntity<Map<String, Object>> scheduleTask(@RequestBody ScheduleTaskRequest request) { try { Runnable task = new Runnable() { @Override public void run() { log.info("定时任务执行: {}", request.getTaskName()); } }; ScheduledFuture<?> scheduledFuture = taskSchedulingService.scheduleTask( request.getTaskName(), task, request.getDelay(), TimeUnit.MILLISECONDS); Map<String, Object> response = new HashMap<>(); response.put("success", true); response.put("message", "任务调度成功"); response.put("taskName", request.getTaskName()); return ResponseEntity.ok(response); } catch (Exception e) { log.error("调度任务失败", e); Map<String, Object> response = new HashMap<>(); response.put("success", false); response.put("message", "调度任务失败: " + e.getMessage()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); } } }
@Data @NoArgsConstructor @AllArgsConstructor public class TaskExecutorRequest { private String executorName; }
@Data @NoArgsConstructor @AllArgsConstructor public class AsyncTaskRequest { private String taskName; private int duration; }
@Data @NoArgsConstructor @AllArgsConstructor public class ScheduleTaskRequest { private String taskName; private long delay; }
|