Сократить время ответа вызова API в проекте Springboot Webflux ⇐ JAVA
-
Anonymous
Сократить время ответа вызова API в проекте Springboot Webflux
Я работаю над проектом Springboot. у меня есть API, ответ на который занимает около 7-8 секунд. я хочу уменьшить его до менее секунды. пожалуйста, найдите код ниже:
КОНТРОЛЛЕР:
@GetMapping("/agent/V2") public Flux findAllTaskByAgentIdV2(@RequestParam UUID AgentId) { вернуть агентService.findAllTaskByAgentIdV2WithStatus(agentId); } УСЛУГА:
public Flux findAllTaskByAgentIdV2WithStatus (UUID AgentId) { вернуть findAllTaskByAgentIdV2 (идентификатор агента) .flatMap(taskMinimizedDto -> updateTaskAndProcessWithStatus(agentId, TaskMinimizedDto)); } частный Mono updateTaskAndProcessWithStatus (UUID AgentId, TaskMinimizedDtoForAgent TaskMinimizedDto) { вернуть процессService.getOverallStatusForAgentForProcesses(agentId) .flatMap(processStatusMap -> { // Обновляем статус процесса в TaskMinimizedDtoForAgent, если существует соответствующий идентификатор процесса TaskMinimizedDto.getProcesses().forEach(processDto -> { StringprocessId =processDto.getId().toString(); если (processStatusMap.containsKey(processId)) { // Устанавливаем статус из второго метода processDto.setStatus(processStatusMap.get(processId)); } }); // Обновляем общий статус задачи вернуть процессService.getCombinedStatusForAgentForATAsk(agentId, TaskMinimizedDto.getId()) .map(overallStatusForTask -> { TaskMinimizedDto.setStatus(overallStatusForTask); вернуть задачуMinimizedDto; }); }); } Код на сервисном уровне необходимо оптимизировать, чтобы сократить время ответа.
Я пытался сократить время ответа, используя параллельную обработку, как показано ниже:
private Mono updateTaskAndProcessWithStatus(UUID AgentId, TaskMinimizedDtoForAgent TaskMinimizedDto) { Mono commonStatusMono =processService.getOverallStatusForAgentForProcesses(agentId) .subscribeOn(Schedulers.parallel()); Mono CombinedStatusMono = ProcessService.getCombinedStatusForAgentForATAsk(agentId, TaskMinimizedDto.getId()) .subscribeOn(Schedulers.parallel()); return Mono.zip(overallStatusMono, комбинированныйStatusMono) .flatMap(кортеж -> { MapprocessStatusMap = tuple.getT1(); // Обновляем статус процесса в TaskMinimizedDtoForAgent, если соответствующий идентификатор процесса существует TaskMinimizedDto.getProcesses().forEach(processDto -> { StringprocessId =processDto.getId().toString(); если (processStatusMap.containsKey(processId)) { // Устанавливаем статус из первого метода processDto.setStatus(processStatusMap.get(processId)); } }); // Обновляем общий статус задачи StatusEnum общийStatusForTask = tuple.getT2(); TaskMinimizedDto.setStatus(overallStatusForTask); вернуть Mono.just(taskMinimizedDto); }); } но время отклика почти такое же. есть ли лучший способ оптимизации?
Я работаю над проектом Springboot. у меня есть API, ответ на который занимает около 7-8 секунд. я хочу уменьшить его до менее секунды. пожалуйста, найдите код ниже:
КОНТРОЛЛЕР:
@GetMapping("/agent/V2") public Flux findAllTaskByAgentIdV2(@RequestParam UUID AgentId) { вернуть агентService.findAllTaskByAgentIdV2WithStatus(agentId); } УСЛУГА:
public Flux findAllTaskByAgentIdV2WithStatus (UUID AgentId) { вернуть findAllTaskByAgentIdV2 (идентификатор агента) .flatMap(taskMinimizedDto -> updateTaskAndProcessWithStatus(agentId, TaskMinimizedDto)); } частный Mono updateTaskAndProcessWithStatus (UUID AgentId, TaskMinimizedDtoForAgent TaskMinimizedDto) { вернуть процессService.getOverallStatusForAgentForProcesses(agentId) .flatMap(processStatusMap -> { // Обновляем статус процесса в TaskMinimizedDtoForAgent, если существует соответствующий идентификатор процесса TaskMinimizedDto.getProcesses().forEach(processDto -> { StringprocessId =processDto.getId().toString(); если (processStatusMap.containsKey(processId)) { // Устанавливаем статус из второго метода processDto.setStatus(processStatusMap.get(processId)); } }); // Обновляем общий статус задачи вернуть процессService.getCombinedStatusForAgentForATAsk(agentId, TaskMinimizedDto.getId()) .map(overallStatusForTask -> { TaskMinimizedDto.setStatus(overallStatusForTask); вернуть задачуMinimizedDto; }); }); } Код на сервисном уровне необходимо оптимизировать, чтобы сократить время ответа.
Я пытался сократить время ответа, используя параллельную обработку, как показано ниже:
private Mono updateTaskAndProcessWithStatus(UUID AgentId, TaskMinimizedDtoForAgent TaskMinimizedDto) { Mono commonStatusMono =processService.getOverallStatusForAgentForProcesses(agentId) .subscribeOn(Schedulers.parallel()); Mono CombinedStatusMono = ProcessService.getCombinedStatusForAgentForATAsk(agentId, TaskMinimizedDto.getId()) .subscribeOn(Schedulers.parallel()); return Mono.zip(overallStatusMono, комбинированныйStatusMono) .flatMap(кортеж -> { MapprocessStatusMap = tuple.getT1(); // Обновляем статус процесса в TaskMinimizedDtoForAgent, если соответствующий идентификатор процесса существует TaskMinimizedDto.getProcesses().forEach(processDto -> { StringprocessId =processDto.getId().toString(); если (processStatusMap.containsKey(processId)) { // Устанавливаем статус из первого метода processDto.setStatus(processStatusMap.get(processId)); } }); // Обновляем общий статус задачи StatusEnum общийStatusForTask = tuple.getT2(); TaskMinimizedDto.setStatus(overallStatusForTask); вернуть Mono.just(taskMinimizedDto); }); } но время отклика почти такое же. есть ли лучший способ оптимизации?
Мобильная версия