【发布时间】:2021-12-12 14:33:14
【问题描述】:
我有一个使用 Spring Boot 的 API 端点。 这个端点的作用是调用另外两个 API 端点并处理它们的响应。
流程的前半部分调用一个 API 端点,获取响应并将此响应与 202 Accepted 一起返回到表面。
202返回后,后台正在进行后半程。它从第一个 API 调用中获取响应并进一步处理它。
我尝试使用Executor 或CompletableFuture,但它们都在返回 202 后停止并且不会运行下半场,或者他们等到下半场完成才返回 202。
这可能实现还是我正在寻找错误的设计?
这里是一些示例代码:
@PostMapping("/user")
public ResponseEntity<?> processUser(@Valid @RequestBody UserRequestDto request,
@RequestHeader("Authorization") String token) throws Exception {
CompletableFuture<UserResponseDto> response = CompletableFuture.supplyAsync(() ->
userService.processUser(request, token));
userService.processUserSecond(response, token);
return new ResponseEntity<>(response, HttpStatus.ACCEPTED);
}
【问题讨论】:
标签: java spring multithreading asynchronous