我需要在akka群集节点之间的几百KB和多MB之间传输数据。最简单的方法是将其拆分为分块消息,但这似乎是可取的,因为它可能会干扰群集的内务处理聊天。
或者,我可以使用消息来传达一次性网址并使用http。
但是,我更喜欢持久连接方法,所以我在考虑使用zeromq和chunked消息。
但我不是采用自己的方法,而是想用现有的方法来实现这一目标,但我还没找到。
还有一个要求:大多数情况下,通过Play直接消耗该流,因此创建可用于将蒸汽代理到http的迭代的方法将更可取。
答案 0 :(得分:1)
Akka Streams 2.5.12有StreamRefs用于我认为是你的用例。
答案 1 :(得分:0)
Iteratees无法跨越机器边界进行通信,因此单独的迭代可能不是您正在寻找的工具。
我会采用以下方法之一:
使用远程rpc akka Actors通过线路发送数据块。可以使用Actor在线路的任意一侧(Enumerator.unicast
和Iteratee.foreach
)创建迭代器和枚举器,这样您使用Actors的事实只是一个实现细节,在您的接口中不可见流。
使用Akka Streams。这个库支持TCP连接,虽然这是一个与迭代器不同的流式库,但我发现它在它支持的流操作中更加健壮。看起来Play正在寻找与Akka Streams一起移动towards a tighter integration,因为他们正在寻找用Akka Http Streams替换他们的netty HTTP后端