Scala akka数据流示例失败

Scala akka数据流示例失败,scala,akka,dataflow,Scala,Akka,Dataflow,我正在尝试一个简单的akka数据流示例,如下所示: import akka.dataflow._ //to get the flow method and implicit conversions object FlowTestApp extends App { import scala.concurrent.ExecutionContext.Implicits.global flow { println("in flow") "Hello worl

我正在尝试一个简单的akka数据流示例,如下所示:

import akka.dataflow._ //to get the flow method and implicit conversions

object FlowTestApp extends App {
    import scala.concurrent.ExecutionContext.Implicits.global

    flow { 
      println("in flow")
      "Hello world!" 
    } onComplete println
}
我还在scala编译器设置的p字段中设置continuations:enable。 但是在运行程序之后,我在控制台里什么也没有得到,没有错误,也没有“你好,世界”。我错过了什么

import akka.dataflow._
import scala.concurrent._, ExecutionContext.Implicits._

// the following are for duration
import scala.language.postfixOps
import scala.concurrent.duration._

object FlowTestApp extends App {

  val f = flow {
    println("in flow")
    "Hello world!"
  } onComplete println

  Await.ready(f, 1 second)
}
如果您正在考虑使用Akka数据流作为线程的非阻塞替代方案,下面是我的2美分:

一些核心语言功能(例如循环、try/finally)在分隔代码块中中断。我一直在使用它进行一些I/O,我对它很满意,但我会确保将它隐藏起来

%akka dataflow的99是Scala的continuations插件。我们只需要定义(这让我感到不可思议)和皮条客的未来#apply(),它们非常小。然而,Scala的continuations插件比非阻塞线程的问题更通用

对于另一种解决方案,请跟踪,它有一种更具体的方法(将看似连续的代码转换为
future{…}flatMap{…}
块)


我上周试过了,到那时scala async的代码转换仍然没有akka dataflow支持的那么多,但是从提交日志来看,它似乎正在快速增长,很快就会超过它。

你应该尝试在
应用程序的主体中加入
线程。sleep(1000)
。可能是在执行
之前终止。我将尝试它。但我猜flow{}只是产生未来,而onComplete是它的回调。所以我需要一些方法来等待未来的完成。