当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring WebFlux创建列表流?

甄华清
2023-03-14
// 1st Flux Started:
[
{
// 1st Dashboard
},
{
// 2nd Dashboard
}
]
// 1st Flux Ended
// 2nd Flux Started:
[
{
// 1st Dashboard
},
{
// 2nd Dashboard
}
]
// 2nd Flux Ended
@Repository
public interface ReactiveDashboardRepository extends ReactiveMongoRepository<Dashboard, String> {
}
@Service
public class ReactiveDashboardServiceImpl implements ReactiveDashboardService {

    private ReactiveDashboardRepository reactiveDashboardRepository;

    public ReactiveDashboardServiceImpl(ReactiveDashboardRepository reactiveDashboardRepository) {
        this.reactiveDashboardRepository = reactiveDashboardRepository;
    }

    public Flux<Dashboard> getDashboards() {

        return this.reactiveDashboardRepository.findAll();
    }


}
@CrossOrigin
@RestController
@RequestMapping("/api/sse")
public class ReactiveDashboardRestController {

    private ReactiveDashboardService reactiveDashboardService;

    public ReactiveDashboardRestController(ReactiveDashboardService reactiveDashboardService) {
        this.reactiveDashboardService = reactiveDashboardService;
    }

    @GetMapping(value = "/dashboards", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<Dashboard> getDashboards() {
        return this.reactiveDashboardService.getDashboards();
    }

}

所以基本上,我希望数组中的所有对象都是单个流的一部分,因为这就是我将要使用的客户端应用程序的设计方式。目前总共只有3个。所以在每个流中都将包含一个数组的所有对象。我知道这不是WebFlux的最佳用途。如果可以做到,这怎么能做到呢?

共有1个答案

邵祺
2023-03-14

如果你想要一个无限流量发送数据与间隔,你需要函数“interval”。

为了简化代码,我建议直接在列表中返回仪表板,并在控制器中以流量转换列表。

它将类似于:

    List<Dashboard> lDashBoard = new ArrayList<Dashboard>(Arrays.asList(
            Dashboard.builder().name("Dash1").build(),
            Dashboard.builder().name("Dash2").build(),
            Dashboard.builder().name("Dash3").build()
            ));
    Flux<List<Dashboard>> intervalFlux = Flux
            .interval(Duration.ofMillis(500))
            .map(tick -> {
                return lDashBoard;
            });
    intervalFlux.subscribe(t->log.info("Dashboards:{}", lDashBoard));
2018-11-14 15:55:18.575  INFO [Dashboards:[Dashboard(name=Dash1), Dashboard(name=Dash2), Dashboard(name=Dash3)]
2018-11-14 15:55:19.073  INFO [Dashboards:[Dashboard(name=Dash1), Dashboard(name=Dash2), Dashboard(name=Dash3)]
2018-11-14 15:55:19.573  INFO [Dashboards:[Dashboard(name=Dash1), Dashboard(name=Dash2), Dashboard(name=Dash3)]
 类似资料:
  • 问题内容: 我们创建为: 我们如何用Java 创建一个? 问题答案: 或使用泛型(Java 7或更高版本) 或带有泛型(旧的Java版本)

  • 我试图使用conllu库创建一个CoNLL-U文件,作为我正在进行的通用依赖项标记项目的一部分。 对此类型的列表运行方法将使其返回为CoNLL-U格式的字符串,如上面示例中的。但是,当您试图在正常的python列表上运行它时,它就会中断。 我如何创建这样的而不是普通的python列表对象?

  • 问题内容: 我是新手,似乎无法工作 可以在等程序中实现。当我尝试在程序中运行此语句时,出现了。 我在文档页面中检查了Derby Db Create Statements ,但是找不到这样的选择。 问题答案: 创建表,捕获并检查SQL状态代码。 完整的错误代码列表可以在这里 找到, 但我找不到 ;大概是 。 您需要的代码是。 只需运行一次代码并打印错误代码。不要忘记添加测试以确保代码有效。这样,您可

  • 我正在尝试创建列表列表,其中大列表表示纸张包含小列表表示问题的集合,问题列表由问题字符串及其ID组成。在这里我的代码: 现在我没有错误地制作问题列表,但是当我尝试创建更大的列表时,Visual Studio无法将可变问题类型识别为类型,哪里错了?

  • 问题内容: 我有一堂课 我有一个返回List对象的方法,例如 我需要像这样将列表转换为JSONArray 谁能帮我得到这个?在此先感谢.. 问题答案: 我认为您无需下载Jettison jar文件。 使用,您可以轻松地将该列表转换为JSON对象,例如@Juniad Answer

  • 问题内容: 我有一个简单的验证器来验证String值是否是预定义列表的一部分: 例如,它将验证: 我想为字符串列表创建一个验证器以验证如下内容: 我尝试了这个: 问题是,如果list包含2个或多个非法值,则将只有一个(第一个)约束违规。我希望它有多个。我应该怎么做? 问题答案: 您当前的代码有2个问题: 在您的方法中,您应该像这样遍历给定列表的所有元素(设置适当的标志): 第二个是针对约束违反的实