Как настроить Spring Controller для обработки обратного запроса - PullRequest
0 голосов
/ 22 мая 2018

Контроллер Spring MVC должен использоваться в качестве прокси-сервера для другой службы для обслуживания, возможно, больших файлов.

Чтобы не хранить в памяти весь ответ WebClient от другой службы в любой момент времени, я хотел использовать реактивные свойстваSpring 5+ Reactor проект и поток его ответ, как он используется браузером.

Текущий код выглядит как

import org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.reactive.function.client.ClientResponse
import org.springframework.web.reactive.function.client.WebClient
import reactor.core.publisher.Mono

@Controller
class ReportController {

    @GetMapping("/reports")
    fun getReport(): Mono<ClientResponse> {
        val webCient = WebClient.create()
        return webCient
                .get()
                .uri("http://localhost:3333/file")
                .exchange()
    }
}

И это вызывает

java.lang.IllegalStateException: Could not resolve view with name 'reports'.
    at org.springframework.web.reactive.result.view.ViewResolutionResultHandler.lambda$resolveViews$3(ViewResolutionResultHandler.java:277) ~[spring-webflux-5.0.6.RELEASE.jar:5.0.6.RELEASE]
  • Как настроить контроллер для обработки Mono<ClientResponse>?
  • Если ответ имеет тип Mono, будет ли запрос иметь обратное давление?Есть ли необходимость преобразовывать его в байтовые куски и делать его Flow?
  • В документации Spring говорится о многих преимуществах противодавления, но не дается ответ на вопрос выше, а также не выдается предупреждение о Mono ответе,Это все еще реагирует?
...