首页 > 解决方案 > 通量或 Flux in spring webflux

问题描述

这是场景

a) 平板电脑使用 http GET 从另一个系统获取用户信息

b)其他系统也可以添加/删除/更新用户信息,操作结果应及时显示在平板电脑上。

为了解决这个问题,我使用 reactor+sse 作为演示代码如下所示

在控制器中

@GetMapping 
public Flux<List<User>> listUser() {
    return service.listUser();
}

在役

public Flux<List<User>> listUser() {
    Flux<List<User>> flux = Flux.generate(
            () -> 0,
            (state, sink) -> {
                synchronized(users) {
                    users.wait();//other thread will notify with all users info is send to service
                }
                sink.next(users);
                newData = false;
                return state + 1;
            });
    return flux;
}

我的问题是,

a) 我应该使用 Flux<User> 来代替 Flux<List<User>> 吗?到目前为止,我没有看到 Flux<List<T>> 的任何用法。还有一个优点是使用 Flux<User>,我不需要将所有用户信息推送到平板电脑,只需添加/删除/更新。

b)如果我使用 Flux<List<User>,我应该在下面的代码中为 bodyToFlux 的参数写什么

webClient.get()
         .uri("/user")
         .accept(MediaType.APPLICATION_JSON)
         .retrieve()
         .bodyToFlux() //???

标签: spring-bootspring-webflux

解决方案


推荐阅读