Reactor Context是否仅用于静态初始化的数据?

问题描述

考虑以下4行代码

Mono<Void> result = personRepository.findByNameStartingWith("Alice")
                                    .map(...)
                                    .flatMap(...)
                                    .subscriberContext()

虚构用例,希望您能立即映射到实际任务要求:

如何在上下文中添加“爱丽丝”,以便在.map()之后,“爱丽丝”不再是Person.class而是Cyborg.class(假定不可逆转换),在{{ 1}}我可以访问原始的“爱丽丝” .flatMap()。我们要比较Person.class内部的“爱丽丝”人与“爱丽丝”机器人的力量,然后将它们都运送到月球上以建造殖民地。

所以我要得出的结论是,其他名称被称为“上下文”,这是大多数在上述压倒性用例中不能使用的。

我必须坚持使用元组和包装器吗?或者我完全是个哑巴,有办法。我需要这个上下文以完全相反的方向进行工作:-),除非“这个”上下文不是我需要的上下文。

解决方法

我将等待Reactor开发人员的关注(或者,稍后,如果我是正确的话,请去GitHub提出概念命名错误的问题),但与此同时。我相信Reactor Context可以解决这个问题:

What is the efficient/proper way to flow multiple objects in reactor

但实际上提醒我们的是,反应式管道在某种程度上大面积封闭,以强制性方式向下传播,并接受来自外部的值,这是一个非常狭窄且有限的用例,被称为“上下文”,这会使更多的人迷惑。

, 您引用的帖子中的

Context和subscriptionContext确实是一个相同的...

Context的目标更多是将一些信息附加到给定的订阅。

之所以可行,是因为在订阅时,构造了Subscriber链以“实现”处理,并且自然而然地将每个给定的运算符(或步骤)作为对其下游的引用,以便能够推送数据

因此,它也可以查询当前订阅Context是什么的视图,因此是一种自上而下的方法。