gpt4 book ai didi

spring-boot - Spring 延迟执行一段代码

转载 作者:行者123 更新时间:2023-12-04 03:14:32 25 4
gpt4 key购买 nike

我有一个 Spring Boot Controller ,它进行两次服务调用。第二个调用应该只在 10 秒后发生,在从第一个调用得到响应后。

public SomeResponse myAction() {
res = serviceCallA();
waitFor(10) {
serviceCallB();
}
return res;
}

该操作不必等待来自 serviceCallB() 的响应来返回响应。对 serviceCallB() 的调用只需在单独的线程中触发。

实现这一点的最佳方法是什么?我需要类似 ThreadPoolTask​​Executor 的东西,但有延迟。

示例代码会很棒..

最佳答案

使用 promise ,而不是可怕的 Thread.sleep从 1999 年开始浪费宝贵的系统资源。您的选择是 CompletableFuture , RxJava Publisher constructs , Spring 自己的 Project Reactor .
serviceCallA返回 Mono<Something> (项目 react 堆)。然后:

res.delayElement(Duration.ofSeconds(10))
.doOnEach(unused -> serviceCallB())
.block();
每个库中可能有 6 种方法可以做到这一点,上面是一种。

关于spring-boot - Spring 延迟执行一段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com