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

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

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

@RestController
@Log4j2
@RequiredArgsConstructor
public class AudioDumpFileAccessController {
    @GetMapping(value = "/dumps")
    public Flux<String> getDumpFiles() {
        return Flux.interval(Duration.ofSeconds(1)) // Simulates waiting something periodically.
                .doOnNext(System.out::println)
                .map(aLong -> {
                    // Get a resource and return it
                    return aLong;
                })
                .skipUntil(aLong -> aLong > 100)    // Simulates available resource.
                .take(1)
                .doOnCancel(() -> System.out.println("Cancelled"))
                .doOnComplete(() -> System.out.println("Completed"))
                .map(aLong -> String.format("Text %d", aLong));
    }
}
$ curl localhost:6631/dumps

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

暂无答案!

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

相关问题