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

Spring boot-WebFlux在运行i parallel时用id保留结果上下文

司承业
2023-03-14

使用Spring boot Web客户机从REST API请求JSON,服务器的响应体存储在一个简单的映射中。对服务器的请求包含一个ID,但它不包括在响应中,而是解释响应所需的。

        List<Map> data = Flux.fromIterable(ids)
                .parallel()
                .runOn(Schedulers.elastic())
                .flatMap(this::callAPI).sequential().collectList().block();
    private Mono<Map> callAPI(UUID id) {
        return client.get().uri(uriBuilder -> uriBuilder
                .path("/{id}/")
                .build(id))
                .retrieve().bodyToMono(Map.class);
    }

共有1个答案

朱保赫
2023-03-14

来自@thomasandolf评论

不从callapi函数返回mono。返回包装器对象中的映射id,您以后可以使用这些对象重新映射到所需的结构.bodytomono(map.class).flatmap(map->{Return mono.just(new Response(id,map));});-Thomas Andolf 22小时前

 类似资料:
  • 我希望在运行相同作业的触发器之间保留重试计数数据。 我尝试将其存储到JobExectionContext.JobDetails.JobDataMap,这是一个DirtyHashMap。它会被存储,但当同一作业第二次由不同的触发器运行时,如果该触发器更新相同键的值,它不会持久。因此,当您访问它时,第三次键值仍然与第一次相同。 注意:当我在作业类上使用@PersistJobDataAfterExecu

  • Spring Boot:2.1.3.释放 你们好, null null 这是一个bug,还是我不应该在像这样的调用后尝试并行运行? 提前感谢你的帮助。

  • 在Eclipse和Maven中运行基于SpringBoot的Java单元测试时,我得到了不同的结果。 我的测试成功地从命令行使用maven(mvn测试)运行,但在Eclipse中运行失败。 我使用与JDK相同的配置,在Eclipse中作为Maven Projekt导入。所以设置几乎相同,但结果却不一样:( 我有什么办法解决这个问题吗?或者有没有类似的问题? 其中大多数是我在使用eclipse运行测

  • 本文向大家介绍cmd运行python文件时对结果进行保存的方法,包括了cmd运行python文件时对结果进行保存的方法的使用技巧和注意事项,需要的朋友参考一下 当用cmd命令行运行python文件时,我们知道可以通过 来运行python文件,此时的输出会直接打印到cmd输出行中,如果希望将运行直接保存而不是即时输出,除了在python代码中直接写入保存,还可以通过命令行: 保存到当前文件目录下,或

  • Spring靴默认日志如下所示: 我写了一个对数Spring.xml,用于为我的应用程序设置一些记录器和附加器。但是,当“资源”目录中存在.xml时,Spring靴默认日志将消失。而且只有一个

  • 当我的selenium程序由于某些错误而崩溃时,它似乎会留下正在运行的进程。 例如,这是我的流程列表: 这是我的代码: 有时,浏览器加载网页元素的速度不够快,所以当它试图点击它没有找到的东西时,Selenium会崩溃。其他时候它工作正常。 为了简单起见,这是一个简单的例子,但是对于一个更复杂的硒程序,什么是保证干净退出而不留下正在运行的进程的方法?它应该在意外崩溃和成功运行时干净退出。