我正在用spring WebClient对API进行并行rest调用。响应如下所示
{
"d": {
"results": [
{
"id": "1",
"name": "Test A"
},
{
"id": "2",
"name": "Test B",
}
]
}
}
POJOS:
public class ProductResponse {
private Products d;
}
public class Products {
private List<ProductModel> results;
}
public class Product {
private String id;
private String name;
}
public Flux<ProductsResponse> getProducts(final List<String> pages) {
return Flux.fromIterable(pages)
.flatMap(page -> webClient.get().uri("SOMEURL?page={page}", page)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(ProductsResponse.class))
.log()
.subscribeOn(Schedulers.elastic());
}
获取产品
Flux<ProductsResponse> productList = getProductList(pages);
List<ProductsResponse> productsResponse = productList.collectList().block();
for (ProductsResponse response : productsResponse) {
for (ProductModel product: response.getD().getResults()) {
System.out.println(product.getProductId());
}
}
这也是有效的,但是有没有一种方法可以直接返回flux
,或者返回mono
更好?
(下一步是将产品保存在数据库中)
请按以下方式尝试:
Flux<Product> productFlux = Flux.fromIterable(pages)
.flatMap(page -> client.get().uri("SOMEURL?page={page}", page)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(ProductResponse.class)
.map(productResponse -> productResponse.d.results)
.flatMapMany(Flux::fromIterable))
.log()
.subscribeOn(Schedulers.elastic());
我试图使用新的SpringBoot2 Reactive WebClient类(它没有批处理endpoint)对同一个rest服务进行并行(批处理)调用。例如,我需要100个“comment”对象(ids为1...100),我正在执行以下并行调用: 我是Spring WebFlux的新手,我不确定这是否是用WebClient进行并行调用的正确方法 > 有没有更好(更合适)的方法来做这件事(即做一个单
问题内容: 我正在编写一个处理具有深节点结构的xml文件(> 1000)的应用程序。使用woodstox(事件API)大约需要6秒钟来解析具有22.000个节点的文件。 该算法被置于与用户交互的过程中,其中只有几秒钟的响应时间是可以接受的。因此,我需要改进如何处理xml文件的策略。 我的过程分析xml文件(仅提取几个节点)。 处理提取的节点,并将新结果写入新的数据流(产生具有修改后的节点的文档副本
我正在从Go中的YAML输入创建一个文档生成器。它需要指定每个项目/节点是从YAML文件的哪一行生成的。有没有办法在Go中实现? 例如,这是一个YAML文件 我希望看到以下内容 我看到一个类似的问题回答了Python解析YAML,返回行号,但我不知道如何利用https://pkg.go.dev/gopkg.in/yaml.v3
是否可以在webclient上将多个请求链接在一起?例如,我希望在进行交易时能够更新买方和卖方的余额。现在它只更新买家余额: 是否有一种方法可以将两个put方法调用在一起,以便更新两个余额? 更新:此方法适用于将单声道值作为uri变量调用。
Spring留档声明,即使要执行同步超文本传输协议调用,我们也必须从RestTemboard切换到。 目前,我有以下代码: 当然,我可以在这里使用CountdownLatch,但它看起来像是API滥用。 如何执行同步请求?
我希望有人能帮我解决这个问题。 我想用WebClient创建一个Rest客户端,从API中检索响应。所以我创建了我的Spring项目,添加了webflux、lombok和h2。我还创建了一个DTO类“CashAccount”和以下方法: 当我使用“.bodyToMono(String.class)”时,所有的功能都很好,我收到了结果: 相反,当我使用“.bodyToMono(cashcount.c