当前位置: 首页 > 知识库问答 >
问题:

如何在运行时创建Mono序列

罗翔
2023-03-14

我试图根据用户输入动态创建一个单声道序列。我正在调用rest API并在Mono中获得ClientResponse。我的用例是在一个序列中调用2个或多个API,下一个API的输入负载取决于前一个API的输出。

我的硬编码序列操作看起来像


    public Mono&ltResponseEntity> processSequentially(ServerHttpRequest request, JsonNode reqBody) {
            RequestData reqData = this.prepareReqMetadata(request, reqBody);
            return commonConnector.getApiResponse(reqData)
                    .flatMap(resp -> resp.bodyToMono(JsonNode.class))
                    .flatMap(respBody -> getApiResponse(request, metadataRequestBuilder, respBody))
                    .flatMap(resp -> resp.bodyToMono(JsonNode.class))
                    .flatMap(respBody -> getApiResponse(request, listingRequestBuilder, respBody))
        }

这是很好的工作,但我想让这个方法通用。我想从用户的POJO列表中获取所有必需的参数,并基于列表输入创建flatMap序列。因此,如果列表的长度为2,则将有2个平面映射序列,如果长度为3或更多,则平面映射的数量也将为3或更多。

共有1个答案

艾心远
2023-03-14
public Mono<ResponseEntity> processSequentially(ServerHttpRequest request, List<JsonNode> reqBody) {
    RequestData reqData = this.prepareReqMetadata(request, reqBody);

    Mono ret = commonConnector.getApiResponse(reqData);

    reqBody.forEach(jsonNode -> ret.flatMap(resp -> resp.bodyToMono(JsonNode.class))
                                .flatMap(respBody -> getApiResponse(request, metadataRequestBuilder, respBody))
    );

    return ret;
}
 类似资料:
  • 我有一个apache-beam应用程序,它在本地使用direct-runner运行流水线,在google cloud中使用dataflow Runner运行流水线。它在本地工作,但让google dataflow Runner失败了。 以下是错误跟踪: 它指向 “...无法反序列化序列化的DofnInfo” 和 “...java.lang.ClassNotFoundException:Header

  • 问题内容: 我有一个MonoA。对象A包含两个列表。我想直接创建两个助焊剂。没有block(),这可能吗? 问题答案: 使用Mono.flatMapMany()方法:

  • 问题内容: 我正在使用Hibernate租约,并且每次用户登录时,我都将数据库更改为其用户名(SQLite)。可悲的是,有时数据库不存在,我需要创建它。 问题是我不知道如何在运行时在数据库中创建所有表。 通常,Hibernete为此创建数据库: 问题答案: 创建数据库之后,可以为此使用SchemaExport导出要在新创建的数据库中创建的实体。基本步骤如下。如何获取配置的属性并不重要。 Javad

  • 我有一个大尺寸的图像。在运行时,我想从存储器中读取图像,并对其进行缩放,以减少其重量和大小,并将其用作缩略图。当用户单击缩略图时,我想显示全尺寸的图像。

  • 我正在使用Python和tkinter创建一个游戏,当我试图添加一些音乐时,制作音乐的函数停止了脚本的其余部分(还有窗口)。所以我需要创建一个新的线程来播放音频并保持窗口工作... 我尝试了一些错误、不运行或停止窗口的事情,目前我有: 重要的细节:playSound函数什么也不返回,所以什么都不需要等待它。我也不太懂用Python编程,我更喜欢用Luau。