Моя проблема: я хочу создать поток строки, который будет время от времени отправляться с контроллера.
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 секунд и все потоки сразу.
Как добиться потока, при котором он начинает отправлять данные, как только отдельные данные готовы?