代码之家  ›  专栏  ›  技术社区  ›  Montassar El Béhi

如何使用Spring data mongodb reactive从受限制的集合流式处理

  •  0
  • Montassar El Béhi  · 技术社区  · 6 年前

    我正在尝试使用这个有趣的存储库方法:

    @Tailable
    Flux<Movie> findWithTailableCursorBy();
    

    通过在控制器中公开, 要流式处理封顶集合中新保存的文档,请执行以下操作:

    这是一个DataAppInitializer:

    @EventListener(ApplicationReadyEvent.class)
    public void run(ApplicationReadyEvent evt) {
    
          operations.collectionExists(Movie.class)
                      .flatMap(exists -> exists ? operations.dropCollection(Movie.class) : Mono.just(exists))
                      .then(operations.createCollection(Movie.class, CollectionOptions.empty()
                                 .size(256 * 256)
                                 .maxDocuments(10)
                                 .capped()))
                      .thenMany(operations.insertAll(Flux.just("Jeyda", "Kaf Efrit").map(title-> new Movie(title)).collectList()))
                      .subscribe();
    }
    

    这是控制器方法:

    @GetMapping(value = "/tail", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    Flux<Movie> allTail() {
        return movieRepository.findWithTailableCursorBy();
    }
    

    我也不例外, 我只是在浏览器中看到一个白色页面,没有新文档流。我错过了一步吗?

    提前感谢您!

    2 回复  |  直到 6 年前
        1
  •  1
  •   mp911de    6 年前

    您的问题中有两个方面不符合您想要实现的目标:

    1. 您的代码包含阻塞位: block() . 请勿致电 .block() 在启动期间或接收由反应式基础结构触发的事件时,在初始值设定项和事件处理程序中。阻止是破坏任何功能并使应用程序失效的最简单方法。
    2. 浏览器不是使用页面视图的流的理想工具。宁可使用 cURL .

    除此之外,你似乎在 Flux<Person> Flux<Movie> .

        2
  •  0
  •   Montassar El Béhi    6 年前

    这个问题来自spring security webflux的SecurityWebFilterChain。我应该联系相关人员通知他们。 感谢您的支持!