0

我的问题:我想创建一个不时从控制器发送的字符串流。

 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 秒后发出数据并立即全部流式传输。

如何在单个数据准备好后立即开始发送数据的流中实现?

4

0 回答 0