2014-11-21 112 views
3

我很好奇斯卡拉目前的库& Akka,这将允许我优雅地构建工作流程管道。斯卡拉管道 - 用于构建DAG工作流程的DSL

就我而言,工作流程仅仅是操作的DAG,因此演员/阿卡感觉非常合适。

我的问题是最好的方法是什么?有类似反应流的Libs允许流水线真正优雅的组合,但他们似乎非常注重记录。

我的用例是在它们之间传递消息的操作流。未来的作文很好,但一段时间后语法变得笨拙。也许有更好的scalaz和不成形的东西。

什么是使用消息传递为计算步骤的流水线构建DSL的方法和工具?

+2

你能解释一下“记录聚焦”意味着什么,以及为什么这不适合“传递消息”?你眼中的“记录”和“信息”有什么区别? – 2014-11-21 15:11:00

+0

对不起。我的管道非常像方法调用链。参数传递是一个消息。 Akka的流媒体方面似乎非常专注于采集数据流。即日志文件。我的情况是一行1行的日志文件。虽然它会工作。它有效吗? – NightWolf 2014-11-22 00:46:34

回答

2

如果您的流水线非常像方法调用链,使用方法调用链

没有必要让解决方案比需要更复杂;如果它是通过一系列方法调用很好地建模的,那就使用它。 (或功能,你可以撰写。)

如果你需要稍微复杂一些,但你实际上不需要任何消息传递,你可能需要像AsyncFPScala.Rx

如果您需要多核解决方案,但您的方法调用看起来很类似,那么在一站式内部有一系列方法调用。您可以使用Akka流而不用担心有用的计算比率的开销。

3

虽然还处于早期开发阶段(写入前1.0版本),但您应该看看akka-streams,这正是一种描述计算图形然后异步运行的方法。

+0

谢谢。 Akka的流媒体方面似乎非常专注于采集数据流。即日志文件。我的情况是一行1行的日志文件。虽然它会工作。它有效吗? – NightWolf 2014-11-22 00:47:31

+0

使用未来作为源的流的任何示例? – NightWolf 2014-11-22 00:49:25

+0

'Source(Future(42))':-) – 2014-11-22 11:06:11