尽管连接关闭,webflux仍等待skipuntil/filter的第一个元素

zlhcx6iw  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(462)

我现在正在使用springboot和springwebflux2.4.3(包括reactor netty1.0.4)。我一直在测试webflux来重写我的控制器代码。所以我编写了一个简单的测试代码来等待并检查资源。
几次尝试之后,我意识到 skipUntil , filter 以及 handle 运算符使可观察对象等待第一个元素发射。下面不是原始的测试代码。这只是测试代码 skipUntil .
如果我移除 skipUntil 操作人员从下面的代码和停止 curl 使用 Ctrl-C ,它显示 Canceled 立即和适当地。否则,它只是等待100秒后取消。这是webflux中的预期行为吗?

  1. @RestController
  2. @Log4j2
  3. @RequiredArgsConstructor
  4. public class AudioDumpFileAccessController {
  5. @GetMapping(value = "/dumps")
  6. public Flux<String> getDumpFiles() {
  7. return Flux.interval(Duration.ofSeconds(1)) // Simulates waiting something periodically.
  8. .doOnNext(System.out::println)
  9. .map(aLong -> {
  10. // Get a resource and return it
  11. return aLong;
  12. })
  13. .skipUntil(aLong -> aLong > 100) // Simulates available resource.
  14. .take(1)
  15. .doOnCancel(() -> System.out.println("Cancelled"))
  16. .doOnComplete(() -> System.out.println("Completed"))
  17. .map(aLong -> String.format("Text %d", aLong));
  18. }
  19. }
  1. $ curl localhost:6631/dumps

如何使用springwebflux实现这些功能?
等待某些资源可用。
当客户机断开连接时,必须立即取消可观察的。
我看到并测试了解决方法。但我认为这个答案似乎是针对苏格兰和南方能源公司的。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题