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

Spring5WebResponsive-我们如何使用WebClient检索流量中的流数据?

巫马浩言
2023-03-14

当前里程碑(M4)文档显示了如何使用WebClient检索Mono示例

WebClient webClient = WebClient.create(new ReactorClientHttpConnector());

ClientRequest<Void> request = ClientRequest.GET("http://example.com/accounts/{id}", 1L)
                .accept(MediaType.APPLICATION_JSON).build();

Mono<Account> account = this.webClient
                .exchange(request)
                .then(response -> response.body(toMono(Account.class)));

我们如何使用WebClient将流式数据(从返回文本/事件流的服务中)获取到通量中?它支持自动杰克逊转换吗?。

这是我在之前的一个里程碑中是如何做到的,但是API已经改变了,再也找不到如何做到这一点了:

final ClientRequest<Void> request = ClientRequest.GET(url)
    .accept(MediaType.TEXT_EVENT_STREAM).build();
Flux<Alert> response = webClient.retrieveFlux(request, Alert.class)

共有2个答案

嵇弘新
2023-03-14

使用Spring 5.0.0。发布这是您如何做到的:

public Flux<Alert> getAccountAlerts(int accountId){
    String url = serviceBaseUrl+"/accounts/{accountId}/alerts";
    Flux<Alert> alerts = webClient.get()
        .uri(url, accountId)
        .accept(MediaType.APPLICATION_JSON)
        .retrieve()
        .bodyToFlux( Alert.class )
        .log();
    return alerts;
}
徐柏
2023-03-14

这就是您如何使用新API实现同样的事情:

final ClientRequest request = ClientRequest.GET(url)
        .accept(MediaType.TEXT_EVENT_STREAM).build();
Flux<Alert> alerts = webClient.exchange(request)
        .retrieve().bodyToFlux(Alert.class);
 类似资料:
  • 如何在请求从DTO转换为JSON字符串之后拦截它们? 反过来,在响应从JSON转换为dto之前拦截它们。

  • 也许这是一个新手问题,但我正在学习颤振和一些东西,如异步、等待、未来,还不适合我的想法。无论如何,我要做的是从“field.documents[index][“name”]”中获取值,并构建一个列表。这是我的代码: 我想让productName在foreach之外。当我打印时,它首先打印null。我也会发布我的整个函数: 谁能帮帮我吗?我知道它与异步编程有关,但我正在学习。谢谢

  • 问题内容: Java开发人员大家好, 我知道这个主题可能有点,因为JDK8尚未发布(无论如何现在还没有。),但是我正在阅读一些有关Lambda表达式的文章,尤其是与与称为Stream的新集合API相关的部分。 这是《Java杂志》文章中给出的示例(这是一种水獭种群算法。): 我的问题是,如果在Set内部迭代的中间,水獭之一为null,会发生什么情况? 我希望抛出NullPointerExcepti

  • 我知道这个主题可能有点,因为JDK8还没有发布(至少现在还没有)但是我读了一些关于Lambda表达式的文章,特别是与新的集合API(称为Stream)相关的部分。 下面是Java Magazine文章中给出的示例(它是一个otter population Algorithm..): 我的问题是,如果在设置的内部迭代中间,其中一个otter为空,会发生什么? null 谢谢!

  • 嗨,如何检查聚合查询中使用的索引和扫描对象的数量,类似于db.collection.find().explain()?