Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Spring WebFlux - читать логи из запущенного процесса?  [new]
_webdev_
Member

Откуда: Germany
Сообщений: 514
Здравствуйте. Примеров в инете к сожалению не так много.
Простые вещи попробовал, работают.

Но видать, что-то я не очень вкуриваю..

Кто-то уже игрался, работает с WebFlux? Может подсказать?

Идея. Запустить процесс и построчно передавать логи в браузер. Хочу это сделать именно с WebFlux.
Но что-то не очень пляшет..

    @RequestMapping("/cmd")
    public Flux<String> cmd() throws IOException, InterruptedException {
        return Flux.fromStream(cmdTest()).delayElements(Duration.ofMillis(100));
    }

    public Stream<String>  cmdTest() throws IOException {

        ProcessBuilder builder = new ProcessBuilder();
        builder.command("java", "-jar", "E:\\ca-runner.jar");
        Process process = builder.start();
//        Mono.fromCallable(() -> new BufferedReader(new InputStreamReader(process.getInputStream())).lines()).flatMapMany(Flux::fromIterable);
        return new BufferedReader(new InputStreamReader(process.getInputStream())).lines();
    }


Получаю

Fri Apr 26 20:22:28 CEST 2019
There was an unexpected error (type=Internal Server Error, status=500).
Multi-value reactive types not supported in view resolution: reactor.core.publisher.Flux<java.lang.String>
java.lang.IllegalArgumentException: Multi-value reactive types not supported in view resolution: reactor.core.publisher.Flux<java.lang.String>
	at org.springframework.web.reactive.result.view.ViewResolutionResultHandler.handleResult(ViewResolutionResultHandler.java:183)
	at org.springframework.web.reactive.DispatcherHandler.handleResult(DispatcherHandler.java:174)
	at org.springframework.web.reactive.DispatcherHandler.lambda$handle$2(DispatcherHandler.java:152)
	at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
	at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)
	at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241)
	at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
	at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73)

.....

	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Assembly trace from producer [reactor.core.publisher.MonoFlatMap] :
	reactor.core.publisher.Mono.flatMap(Mono.java:2491)
	org.springframework.web.reactive.DispatcherHandler.handle(DispatcherHandler.java:152)
Error has been observed by the following operator(s):
	|_	Mono.flatMap &#226;‡&#162; org.springframework.web.reactive.DispatcherHandler.handle(DispatcherHandler.java:152)
	|_	Mono.defer &#226;‡&#162; org.springframework.web.server.handler.DefaultWebFilterChain.filter(DefaultWebFilterChain.java:119)
	|_	Mono.defer &#226;‡&#162; org.springframework.web.server.handler.DefaultWebFilterChain.filter(DefaultWebFilterChain.java:119)


Спасибо!
26 апр 19, 21:23    [21873057]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить