我有一个Spring Flux应用程序,在某些时候我需要在后台执行一些繁重的任务,调用方(HTTP请求)不需要等到该任务完成。
如果没有反应器,我可能会使用异步注释,在不同的线程上执行该方法。对于反应堆,我不确定我是否应该继续这种方法,或者是否已经有一个内置的机制允许我实现这一目标。
例如,给定一个接受 Resource 对象的控制器:
@PostMapping("/create")
public Mono<Resource> create(@Valid @RequestBody Resource r) {
processor.run(r); // the caller should not wait for the resource to be processed
return repository.save(r);
}
和处理器类:
@Async
void run(Resource r) {
WebClient webClient = WebClient.create("http://localhost:8080");
Mono<String> result = webClient.get()
.retrieve()
.bodyToMono(String.class);
String response = result.block(); //block for now
}
的 HTTP 调用方不需要等到方法完成。/createrun
缥缈止盈
潇湘沐
相关分类