Spring Webflux如何分批响应请求

时间:2019-10-12 01:48:32

标签: spring-webflux

该服务非常耗时,因此我想在完成每一个小步骤的同时给客户端一些信息。 以下是演示,我尝试以一秒为间隔,分三批向客户发送3个数字。 但是它不起作用,等待3秒钟后,clinet会分批接收3个nmuber。

@Bean
    public RouterFunction<ServerResponse> timerRouter() {
        timeHandler = new TimeHandler();
        return route(GET("/print"),ProcessHandler::printInterval);
    }


@Component
public class ProcessHandler {   
public Mono<ServerResponse> printInterval(ServerRequest serverRequest) {
        Flux.from(Flux.just("1","2","3")).doOnNext(System.out::println);
        List<String> list = Arrays.asList("1","2","3");
        return ok().contentType(MediaType.TEXT_EVENT_STREAM).header("Access-Control-Allow-Origin", "*").body(  // 1
                Flux.fromIterable(list).map(l->
                {
                    try {
                                TimeUnit.MILLISECONDS.sleep(1000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                    return l;
                }),String.class);
    }
}

0 个答案:

没有答案