2

현재 중요 시점 (M4) 문서 쇼와 예 :Spring 5 Web Reactive - WebClient를 사용하여 Flux에서 스트리밍 된 데이터를 검색하려면 어떻게해야합니까? <code>WebClient</code>를 사용하여 <code>Mono</code>를 검색하는 방법에 대한

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))); 

어떻게 우리가 플럭스 사용하여 웹 클라이언트에 (text/event-stream를 반환하는 서비스)에서 스트리밍 데이터를 얻을 수 있습니까? 자동 잭슨 변환을 지원합니까?

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

현재 이정표는 M4입니다 ... 그래서 당신은에 할 수 있습니다 문서를 다시 확인하십시오. M4 릴리스에서 반응 기능을 완료하기위한 많은 작업이 수행되었습니다. –

+0

나는 이것과 심지어 현재의 스냅 샷을 체크했는데 이것에 대한 세부 사항은 없다. – codependent

+0

스프링 프레임 워크 5 RC3을 확인했는데 ClientRequest에 지금 GET 메소드가없는 것 같습니다. – Sergey

답변

3

이 새와 같은 일을 달성 할 수있는 방법이다 : 나는 이전의 이정표에 그것을 어떻게

는하지만 API 변경하고 더 이상 작업을 수행하는 방법을 찾을 수 없습니다 API는 :

봄 5.0.0.RELEASE와
final ClientRequest request = ClientRequest.GET(url) 
     .accept(MediaType.TEXT_EVENT_STREAM).build(); 
Flux<Alert> alerts = webClient.exchange(request) 
     .flatMap(response -> response.bodyToFlux(Alert.class)); 
2

이 당신이 그것을 할 방법 :

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; 
}