阿尔乔姆。很高兴看到新版本的 si。是否可以在 Spring 集成流程中使用反应器或 rxjava?像这样
例如:输入带有一些集合的xml=>reactive splitter->reactive transformer->reactive outbound
阿尔乔姆。很高兴看到新版本的 si。是否可以在 Spring 集成流程中使用反应器或 rxjava?像这样
例如:输入带有一些集合的xml=>reactive splitter->reactive transformer->reactive outbound
首先感谢您的反馈和对我们工作的关注。我们正在努力追随现实世界的趋势,并始终保持及时;-)。
好吧,关于 Reactor 或类似的 Reactive Streams 解决方案。
我注意到做你的“从头开始”流程是个好主意。即使 Spring Integration 看起来像 Reactive Streams,我们应该以这种方式组合它们也没关系。
首先,Spring Integration 是一个“托管”流广告,它需要 Spring Container,所以如果你想将它与 Reactor 结合起来,你应该从提供Stream
. 从另一端获取Stream
来自 Spring Integration 的 Reactor 的访问权限,我们最终应该将其设为 Spring bean。
即将到来的 Spring Integration 4.1 引入了Promise<?> Gateway
. 因此,如果您的Controller
orService
是 Spring bean 并且代码是通过 Reactor 编写的,Stream
那么您可以使用 Gateway 接口访问 Spring 集成流 - 并且该集成流的结果将被填充为Event
下一个流操作。
当您需要push
Spring Integration 的操作而不是pull
.
假设你有 Reactor Deffered
bean:
@Bean
public Deffered<Integer, Stream<Integer>> reactorStream() {
Deferred<Integer, Stream<Integer>> stream = Streams.<Integer>defer(new Environment());
stream.compose().collect(5).timeout(1000);
return stream;
}
之后,我们可以继续使用它channel-adapter
:
<outbound-channel-adapter channel="reactorStreamChannel" ref="reactorStream" method="accept"/>
无论如何,我不建议一直从一个“世界”跳到“另一个”,因为我们可能会失去他们两个最好的。或者 Reactor Stream 是一个主流,都是 Spring 集成的。
我很高兴听到我们 Reactor 团队的其他想法 :-)。