问题描述
我想基于两个客户端的请求在响应中发送偏结果。我正在使用Flux.concat
方法来组合Monos。但是,当我收到第一个结果并使用sink.next
方法将结果发送到响应中时,Flux创建完成,并且我丢失了第二个结果以发送到响应中。仅当我收到客户请求的所有结果时,如何才能完成助焊剂?
@GetMapping(value = "/movies/{name}",produces = {MediaType.TEXT_EVENT_STREAM_VALUE})
public Flux<String> search(@PathVariable("name") String name) {
return this.movieService.search(name);
}
public class MovieService {
private final ClientA clientA;
private final ClientB clientB;
public Flux<String> search(String name) {
Mono<String> monoA = this.clientA.search(name);
Mono<String> monoB = this.clientB.search(name);
return Flux.create(sink -> {
Flux.concat(monoA,monoB).subscribe(value -> {
log.info("Value {}",value);
sink.next(value);
sink.complete();
});
});
}
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)