Поток струн испускается время от времени - PullRequest
0 голосов
/ 06 марта 2020

Моя проблема: я хочу создать поток строки, который будет время от времени отправляться с контроллера.

 Processing started!
 Step 1 completed.                     (This might be sent after 5 seconds or 10 minutes.)
 Process completed.                    (This might be sent after 15 minutes.)

Вот фрагмент кода в контроллере:

@GetMapping(value = "/stream1", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> streamData() {
        return Flux.create(emitter -> {
            emitter.next("Processing started!");
            try {
                TimeUnit.SECONDS.sleep(5);
                emitter.next("Step 1 completed.");
                TimeUnit.SECONDS.sleep(5);
                emitter.next("Process completed.");
                emitter.complete();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, FluxSink.OverflowStrategy.LATEST);
        //create.publish().connect();
        //return create;
    }

Но он выдает данные только после завершения всей обработки. Означает, что он выдает данные через 10 секунд и все потоки сразу.

Как добиться потока, при котором он начинает отправлять данные, как только отдельные данные готовы?

...