保留反应流中的上下文

var*_*run 1 java reactor reactive-programming project-reactor spring-webflux

有人可以帮助我理解上下文是如何在反应流中传递的。例如,请参见下面的代码:

Flux<Integer> expectedFluxWithContext = Flux.just(1, 2, 3, 4)
        .flatMap(item -> Mono.just(item).contextWrite(Context.of("traceId", item)))
        .doOnEach(signal -> System.out.println(signal.getContextView()));
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我得到了我所期望的正确数据,但在doOnEach运算符中上下文是空的。

任何人都可以帮助我了解如何在流中共享上下文以及我可以做出哪些更改来完成这项工作。

p.s*_*eef 7

上下文仅在管道中“向上”可用,因为它是在订阅时附加的,并且不知道下游的任何内容。它并不意味着传递在管道执行期间获取的东西,如果你想“传递”它,你可能需要使用元组。

有关更多信息,我建议阅读 Reactor 参考指南的相应部分: https: //projectreactor.io/docs/core/release/reference/#context