Tag: 项目反应器

这是反应堆单声道的错误吗?

使用Reactor时我注意到了一些奇怪的行为。 情况是这样的: 拨打其余的API端点,获取一个包装在Mono中的值 用另一个值调用另一个API端点,检索另一个包装在Mono中的值 压缩两个结果 看起来会发生什么是onSubscribe(FluxMap.MapSubscriber)被调用两次的第一个API调用,然后打开两个连接,并产生两个结果。 传递给第二个API调用的结果是非确定性的,取决于第二个API调用是在前两个调用中的第二个调用完成之前还是之后执行。 这是使用Kotlin和Springboot WebClient重现问题的代码示例。 API端点根据路径参数生成单个GUID或多个GUID。 我使用第一个调用的结果中的第一个数字作为第二个调用中的路径参数: val api = “https://www.uuidgenerator.net/api/guid” val client = WebClient.builder() .baseUrl(api) .build() @Test public fun reactorBug() { val firstResult = callApi().doOnSuccess { r -> println(“callApi returned: $r”) } val secondResult = callApi(firstResult).doOnSuccess { r -> println(“callApi(result) returned: $r”) } println(Mono.zip(firstResult, secondResult, { first, second -> “First […]