如何订阅在不同JVM上运行的反应流实现?

如何订阅在不同JVM上运行的反应流实现?,jvm,akka-stream,reactive-streams,Jvm,Akka Stream,Reactive Streams,让我们假设有两个Akka流,每个流都在自己的JVM上运行 // A reactive streams publisher running on JVM 1: val stringPublisher: Publisher[String] = Source(() => "Lorem Ipsum".split("\\s").iterator).runWith(Sink.publisher[String]) // A reactive streams subscriber running on

让我们假设有两个Akka流,每个流都在自己的JVM上运行

// A reactive streams publisher running on JVM 1:
val stringPublisher: Publisher[String] = Source(() => "Lorem Ipsum".split("\\s").iterator).runWith(Sink.publisher[String])

// A reactive streams subscriber running on JVM 2:
def subscriber: Subscriber[String] = Sink.foreach[String](println(_)).runWith(Source.subscriber[String])

// Subscribe the second stream to the first stream
stringPublisher.subscribe(subscriber)
这个示例在一个JVM上运行良好,但是如何订阅运行在不同JVM上的发布服务器呢

我必须使用消息传递/排队中间件,还是可以使用反应流API将两者连接在一起?

规范没有提到分布式(跨网络)流,并且当前的it实现(例如Akka流)都没有实现跨网络边界的流。这有点棘手(但可以做到,也可能会做到),因为在消息丢失的情况下需要透明的重新传递


简短回答:你(目前)不能。然而,由于Akka HTTP是基于流的,并且通过TCP应用背压,您可以通过连接流,背压将按预期工作。

乍一看,您需要一些消息传递或RPC,因为每个JVM都在其自己的沙盒上运行。好问题。。。我也在推理“分布式反应流”。底层的mechansim是Akka,Akka可以扩展到不同的机器。但我不确定Akka Stream是否支持这种“开箱即用”。。。