在我的Spring Boot
网络应用中,我两次调用了旧版系统。当第一个电话返回时,我需要等待一段时间才能拨打第二个电话。
我不想在线程中sleep
,而是将其返回到池中,直到一段时间后才能进行第二次调用。
所以问题是:我该怎么实现呢?
答案 0 :(得分:0)
看看javax.servlet.AsyncContext
,它仅在这种情况下存在。
答案 1 :(得分:0)
解决方案可能如下:
@GetMapping("/fubar")
public DeferredResult<ResponseEntity<?>> fubar() {
DeferredResult<ResponseEntity<?>> result = new DeferredResult<>();
scheduledExecutor.schedule(() -> {
// do some useful stuff here
result.setResult("Hello World");
}, 5, TimeUnit.SECONDS);
return output;
}
它是这样的:
DeferredResult
实例DeferredResult
实例,客户端将等待直到延迟过去,然后再接收结果。注意!所有工作将在属于计划执行程序的线程池中发生,而不是在公共池中发生。因此,需要对其进行相应的配置。