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

使用请求上下文并行调用上游服务

廖琨
2023-03-14

我是SpringWebFlux的新手。

我有一个不支持批处理调用的上游服务,因此我必须为数组中的每个对象多次调用它。我还需要请求参数的实例,因为服务在响应中不返回这些属性。

例如,这是我将发送给客户的回复

class Person {
  int id;
  String name;
  int phoneNo;
}

我只有身份证清单

列表

对于每个人,api响应也是

{
   "name": "name",
   "phoneNo": 2222222222
}

注意,响应中没有id字段,因此,我需要请求参数来映射请求和响应。

我有一个名为createRequestFromIdWillReturnMono(int-id)方法,它接受整数id并返回web客户端Mono作为响应。

到目前为止我所尝试的

List<Person> response = new ArrayList<Person>();
List<Integer> lstInt = IntStream.rangeClosed(0, 10).boxed().collect(Collectors.toList());
Flux
     .fromIterable(lstInt)
     .flatMap(i -> createRequestFromIdWillReturnMono(i)
                       .map(personResponse -> response.add(new Person(i, personResponse))));
return response; 

但这段代码只运行响应。添加调用一次,即使它调用createRequestFromIdWillReturnMono 10次。

我该怎么解决这个问题?


共有1个答案

佟涵畅
2023-03-14

你不需要这个列表,你可以使用CollectList返回一个列表。或者返回Flux

Mono<List<Persons>> personsMono = Flux.fromIterable(lstInt)
     .flatMap(i -> createRequestFromIdWillReturnMono(i))
     .map(personResponse -> new Person(i,personResponse))
     .collectList();

像这样的事情,我现在不在电脑前,所以不能保证它能编译,但你应该明白。

 类似资料:
  • 这部分文档描述了在 Flask 0.7 中的行为,与旧的行为基本一致,但有细小微妙的 差异。 这里推荐先阅读 应用上下文 章节。 深入上下文作用域 比如说你有一个应用函数返回用户应该跳转到的 URL 。想象它总是会跳转到 URL 的 next 参数,或 HTTP referrer ,或索引页: from flask import request, url_for def redirect_url

  • 在进行开源开发时,在对主题分支进行任何更改的同时,在一段时间内跟踪上游是正常的。我注意到的一件事是,当返回上游时,创建了一个合并提交。如果我创建了一个pull请求,这个合并提交将作为PR的一部分结束。 我的问题是,这有什么害处吗?我读到过一些人觉得它们没用,但我喜欢这样一个事实,即它们充当了我上次与上游同步的时间戳。有没有一种公认的做法来跟踪上游并引入合并提交。

  • Spring Boot对于如何使用Spring构建应用程序有一个看法:例如它具有常规配置文件的常规位置,以及用于常见管理和监视任务的端点。Spring Cloud建立在此之上,并添加了一些可能系统中所有组件将使用或偶尔需要的功能。 引导应用程序上下文 一个Spring Cloud应用程序通过创建一个“引导”上下文来进行操作,这个上下文是主应用程序的父上下文。开箱即用,负责从外部源加载配置属性,还解

  • 可以代理请求上下文中的数据,支持静态方法调用和对象方法调用。 示例 假设有这么一个类: <?php namespace Imi\Test\Component\RequestContextProxy; class A { public function add($a, $b) { return $a + $b; } } 定义代理类 RequestCont

  • 我可以使用将文件上载为 上面的代码运行良好。 现在,我想对同一作业使用。我试着在网上搜索并实现代码。但我无法得到结果。 html代码如下所示: 代码中没有任何形式。如何解决问题?

  • 我正在执行使用Python请求库上传文件的简单任务。我搜索了Stack Overflow,似乎没有人遇到同样的问题,即服务器无法接收文件: 我正在用我的文件名填充upload_file关键字的值,因为如果我把它留空,它会说 现在我得到了 只有当文件为空时才会显示。所以我一直在思考如何成功地发送文件。我知道这个文件是有效的,因为如果我去这个网站手动填写表单,它会返回一个匹配对象的列表,这就是我想要的