Spring 5 Web Reactive - 我们如何使用WebClient检索Flux中的流数据?

时间:2016-12-30 12:40:26

标签: spring reactive-programming project-reactor spring-webflux

当前里程碑(M4)文档显示了有关如何使用$numResults = $resource->num_rows; $firstrow = $rows[0]; //first $rows[$numresults-1]; //last 检索Mono的示例和示例:

WebClient

我们如何使用WebClient将流式数据(从返回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))); 的服务)转换为Flux?它是否支持自动Jackson转换?。

这就是我在之前的里程碑中所做的事情,但API已经改变,无法再找到如何做到这一点:

text/event-stream

2 个答案:

答案 0 :(得分:6)

这就是使用新API实现相同目的的方法:

final ClientRequest request = ClientRequest.GET(url)
        .accept(MediaType.TEXT_EVENT_STREAM).build();
Flux<Alert> alerts = webClient.exchange(request)
        .retrieve().bodyToFlux(Alert.class);

答案 1 :(得分:4)

&lt; p&gt;使用Spring 5.0.0.RELEASE,你就是这样做的:&lt; / p&gt; &lt; pre&gt;&lt; code&gt; public Flux&lt; Alert&gt; getAccountAlerts(int accountId){     String url = serviceBaseUrl +“/ accounts / {accountId} / alerts”;     通量LT;警报和GT; alerts = webClient.get()         .uri(url,accountId)         。接受(MediaType.APPLICATION_JSON)         .retrieve()         .bodyToFlux(Alert.class)         .LOG();     返回警报; } &LT; /代码&GT;&LT; /预&GT;