就mono
而言,它们之间的主要区别是什么?从文档中,我了解到FlatMap
是异步操作,而Map
是同步操作。但这对我来说并没有什么意义,B/C单声道是关于并行性的,这一点是不可理解的。有人能用一种更容易理解的方式来重新表述吗?
然后在FlatMap
的文档中声明(https://projectreactor.io/docs/core/release/api/reactor/core/publisher/mono.html#FlatMap-java.util.function.function-):
Transform the item emitted by this Mono asynchronously, returning the
value emitted by another Mono (possibly changing the value type).
另一个单声道是指哪一个?
mono#FlatMap
接受一个函数
,该函数将一个值转换为另一个mono
。该单声道可以表示一些异步处理,如HTTP请求。
另一方面,mono#map
接受一个函数
,该函数将T
类型的值转换为另一个R
类型的值。因此,这种转换必须同步进行(例如,将字符串
转换为URL
实例)。
FlatMap
的另一个微妙之处在于,操作符订阅生成的mono
,这与将相同的函数
传递给map
时的情况不同。
请忽略这个问题。我有错误的设置,导致gRPC的性能不佳。 是否可以比较GRPC与项目Reactor? 我只是想比较REST和GRPC的性能。我看不出GRPC比Reactor快。事实上,它更糟。 GRPC设置: 此 grpc 服务器使用服务器端流对来自 api 服务器的每个请求响应 1000 个“Hello”。 api 服务器返回
项目Reactor3.1.5。发布 考虑这一点: 我希望订阅服务器在多个线程中运行,但它只在一个线程中运行: 留档告诉我的期望是正确的(http://projectreactor.io/docs/core/release/reference/#threading)。有人能给我解释一下那里发生了什么吗?
我创建了一个简单的Kafka使用者,它返回一个对象流(接收到的消息),我试图使用测试它。 在我的测试中,我做了类似的事情: 断言工作正常(如果将值从更改为其他值,则测试失败)。但是,如果断言通过,测试永远不会退出。 我还尝试使用方法,如下所示: 在本例中,我得到以下错误: 你知道我做错了什么吗?
我是项目Reactor或反应式编程的新手,所以我可能做错了什么。我正在努力构建一个执行以下操作的流程: 给定类实体: 从DB读取实体(
我试图在Reactor顶部设计一个管道框架。 在每个阶段(不考虑第一个和最后一个阶段),我们都有转换对象的任务(即字符串到其长度或url到其HTML内容等)。举个例子: 您可以看到中间层有3个任务,每个任务将一个X对象转换为一个Y对象(顺便说一句,它始终是一个完全连接的层) 我的问题/困境:我的第一个想法是,我所需要的是通量。merge(),然后将其连接到每个订阅者。例如: 另一种选择是放置处理器
Project Reactor很棒,我可以很容易地切换一个线程来处理另一个线程上的某些部分,但我已经查看了schedulers.fromExecutorService()方法,该方法每次都会分配新的ExecutorService。因此,当调用此方法时,总是会创建调度器并再次分配调度器。我不确定,但我认为这可能会导致内存泄漏... 我想知道如何将调度器注册为bean,它单例所以只会分配一次,而不是每