skipUntil当使用和flatMap(fn, concurrency)运算符时,我在 Reactor (v. 3.4.2) 中经历了奇怪的行为concurrency=1。管道挂了。
为了证明我的意思,这里有一个简短的例子,它按我的预期工作:
Flux.range(1, 5)
.skipUntil(v -> v > 1)
.flatMap(v -> Mono.just(v))
.doOnNext(System.out::println)
.blockLast();
Run Code Online (Sandbox Code Playgroud)
它将2、3、4和打印5到单独的行。但是,如果我添加等于运算符的并发参数,1则flatMap执行将挂起:
Flux.range(1, 5)
.skipUntil(v -> v > 1)
.flatMap(v -> Mono.just(v), 1)
.doOnNext(System.out::println)
.blockLast();
Run Code Online (Sandbox Code Playgroud)
我不知道我是否错过了某些东西,或者skipUntil在它跳过第一个项目后,它不会从上游请求下一个项目,或者存在一些错误的行为。第二个例子有效吗?