gpt4 book ai didi

java - Reactor - 使用 Flux.publish() 会阻止 StepVerifier.thenCancel() 工作?

转载 作者:太空宇宙 更新时间:2023-11-04 09:51:27 25 4
gpt4 key购买 nike

如果我直接将 Flux 与 StepVerifier 一起使用,则一切正常,但如果我在 Flux 上调用 publish().autoConnect() 并将结果与​​ StepVerifier 一起使用,则 verify() 步骤永远不会完成。

例如我有一个像这样的简单通量,它生成整数 0 到无穷大:

Flux<Integer> flux = Flux.fromStream(Stream.iterate(0, i -> i + 1));

如果我只使用一些元素,取消并验证,那么使用 StepVerifier 一切都会正常工作:

StepVerifier.create(flux)
.thenConsumeWhile(i -> i < 10)
.thenCancel()
.verify();

但是如果我执行以下操作,那么它永远不会完成:

StepVerifier.create(flux.publish().autoConnect())
.thenConsumeWhile(i -> i < 10)
.thenCancel()
.verify();

我猜这里发生了一些相当明显的事情,但我不知道是什么?

当我尝试在测试中使用 StepVerifier 时,就会出现这种情况,其 API 如下所示:

class MyApi {
private Flux<Integer> underlyingFlux = ...

Flux<Integer> getFlux() { return underlyingFlux.publish().autoConnect(); }
}
<小时/>

查看我的github examples一些准备运行的代码演示了我在 StepVerifier 中看到的问题。

<小时/>

更新:此问题已被 Reactor 团队视为错误 - 请参阅问题 #1528 - 并在reactor-core版本3.2.9.RELEASE中提供了修复。

最佳答案

此问题已被 Reactor 团队视为错误 - 请参阅问题 #1528 - 并在reactor-core版本3.2.9.RELEASE中提供了修复。

关于java - Reactor - 使用 Flux.publish() 会阻止 StepVerifier.thenCancel() 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54693728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com