在Akka-Streams中的流内拆分

hve*_*iga 2 akka akka-stream

我试图提出一种解决方案,将收到的传入字符串拆分为多个字符串。我一直在研究,在以前的Akka-Streams版本中似乎有一个Transformer可以扩展以进行这种转换的类。

在我使用的版本(RC2)中,有Stages,但我不确定如何实现拆分模式。

Source.actorPublisher[String](MyActor.props).
.XXXXX(_.split("\n"))
.map(...)
.to(Sink(...))
Run Code Online (Sandbox Code Playgroud)

我正在寻找XXXXX允许我输入a String并返回一个序列的组件String,并将每个组件发送到流程的其余部分。

cmb*_*ter 5

我同意@jrudolph,这mapConcat可能就是您想要的。一个简单的示例展示了此方法的实际作用:

  val strings = List(
  """hello
     world
     test
     this""",
     """foo
     bar
     baz
     """

  )

  implicit val system = ActorSystem("test")
  implicit val mater = ActorFlowMaterializer()
  Source(strings).
    mapConcat(_.split("\n").map(_.trim).toList).
    runForeach(println)
Run Code Online (Sandbox Code Playgroud)

如果运行此代码,则会看到以下内容:

hello
world
test
this
foo     
bar
baz
Run Code Online (Sandbox Code Playgroud)