@RequestMapping(value = "/endpoint", method = RequestMethod.POST)
public ResponseEntity<?> endpoint(@RequestBody final ObjectNode data, final HttpServletRequest request) {
somefunction();
return new ResponseEntity<>(HttpStatus.OK);
}
public somefunction() {
.....
}
在 Java spring Controller 中,我有一个端点。当这个端点被调用时,我希望它直接返回,而不是等待 somefunction()
完成。任何人都可以教我如何处理这个问题?
最佳答案
如果您使用的是 Java 8,则可以使用新的 Executor
类:
@RequestMapping(value = "/endpoint", method = RequestMethod.POST)
public ResponseEntity<?> endpoint(@RequestBody final ObjectNode data, final HttpServletRequest request) {
Executors.newScheduledThreadPool(1).schedule(
() -> somefunction(),
10, TimeUnit.SECONDS
);
return new ResponseEntity<>(HttpStatus.ACCEPTED);
}
这将:
- 安排
somefunction()
在 10 秒延迟后运行。 - 返回 HTTP 202 已接受(这是当您的 POST 端点实际上没有当场创建任何内容时您应该返回的内容)。
- 10 秒后运行
somefunction()
。
关于java - 如何让 Java rest api 调用立即返回而不是等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906367/