分裂在Akka-Streams中的流动

时间:2015-05-19 14:45:20

标签: akka akka-stream

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

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

Source.actorPublisher[String](MyActor.props).
.XXXXX(_.split("\n"))
.map(...)
.to(Sink(...))

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

2 个答案:

答案 0 :(得分:4)

我同意@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)

如果您运行此代码,您将看到以下内容:

hello
world
test
this
foo     
bar
baz

答案 1 :(得分:1)

Akka为此类问题提供Framing帮助函数。

假设您的字符集是UTF-8,您可以编写一个函数,该函数接受分隔的Bringing machine 'project' up with 'virtualbox' provider... Vagrant Berkshelf could not find the 'berks' executable in your PATH. Please download and install the latest version of the ChefDK from: https://downloads.getchef.com/chef-dk and follow the installation instructions. Do not forget to add the ChefDK to your PATH. 值的最大大小,并返回可以执行拆分的String

Flow