Можно ли совершать последующие вызовы WebClient при испускании потоковых элементов? - PullRequest
0 голосов
/ 26 февраля 2019

Я работаю с API, который отображает только идентификатор места события в ответе при выполнении вызова API поиска событий.Я смотрю, есть ли способ сделать запрос Spring WebClient для получения информации о месте проведения при отправке элементов Flux.

val events =  eventService.fetchEventsByLocation(lat,lon,radius)
            .flatMapIterable { eventResponse ->  EventTransformer.map(eventResponse)}
            .doOnNext { transformedEvent -> this.repository.save(transformedEvent) }


fun fetchEventsByLocation(lat:Double?,lon:Double?,radius:Double?): Mono<EventResponse> {

    val builder = UriComponentsBuilder.fromPath(SEARCH_EVENTS)
            .queryParam("categories", "103")
            .queryParam("location.within", 20.toString() + "mi")
            .queryParam("location.latitude", lat)
            .queryParam("location.longitude", lon)
            .queryParam("token",apiKey)

    return this.webClient.get()
            .uri(builder.toUriString())
            .accept(MediaType.APPLICATION_JSON_UTF8)
            .exchange()
            .flatMap { response -> response.bodyToMono(String::class.java) }
            .map { response -> transform(response) }
}

 fun fetchEventVenue(id:String?): Mono<Venue> {
    val builder = UriComponentsBuilder.fromPath(VENUES + id)
            .queryParam("token",apiKey)

    return this.webClient.get()
            .uri(builder.toUriString())
            .accept(MediaType.APPLICATION_JSON_UTF8)
            .exchange()
            .flatMap { response -> response.bodyToMono(Venue::class.java) }
}

1 Ответ

0 голосов
/ 26 февраля 2019

doOnNext является промежуточной операцией.Без терминальной операции (такой как subscribe) поток не используется.

...