从控制器任务中的Mono返回通量

问题描述

我想基于两个客户端的请求在响应中发送偏结果。我正在使用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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...