Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala播放调度程序与后台作业的演员_Scala_Playframework_Akka - Fatal编程技术网

Scala播放调度程序与后台作业的演员

Scala播放调度程序与后台作业的演员,scala,playframework,akka,Scala,Playframework,Akka,我对Scala和Play framework还不熟悉,我正试图弄清楚如何使用后台作业 我发现安排作业基本上有两种方法:创建参与者或安排异步任务 我想请教一下,什么时候更好?我发现演员非常复杂,有很多样板代码,我不喜欢编写比实际动作代码更多的代码来触发动作 下面是一个如何使用调度程序的示例 def send(purchase: Purchase): Unit = system.scheduler.scheduleOnce(100.milliseconds) { execute(pur

我对Scala和Play framework还不熟悉,我正试图弄清楚如何使用后台作业

我发现安排作业基本上有两种方法:创建参与者或安排异步任务

我想请教一下,什么时候更好?我发现演员非常复杂,有很多样板代码,我不喜欢编写比实际动作代码更多的代码来触发动作

下面是一个如何使用调度程序的示例

def send(purchase: Purchase): Unit = 
  system.scheduler.scheduleOnce(100.milliseconds) {
    execute(purchase)
  }

def execute(purchase: Purchase): Unit = {
  ... send email ...
  ... calculate stuff and write to DB ...
}
与上面的代码相比,如果使用Actor,我首先需要声明一个Actor:

object ConfiguredActor {
  case object GetConfig
}
class ConfiguredActor @Inject() (configuration: Configuration) extends Actor {
  ...
}
然后把它绑起来

class MyModule extends AbstractModule with AkkaGuiceSupport {
  def configure = {
    bindActor[ConfiguredActor]("configured-actor")
  }
}
然后注入并使用它

class Application @Inject() (@Named("configured-actor") configuredActor: ActorRef)
                            (implicit ec: ExecutionContext) extends Controller {

  def getConfig = Action.async {
    (configuredActor ? GetConfig).mapTo[String].map { message =>
      Ok(message)
    }
  }
}
还有一个
儿童演员的概念,我不知道什么时候使用它

文档没有明确说明何时应该使用每种方法。我有一种感觉,调度器更好地用于fire and forget任务,而当需要响应时,参与者更好。但我不确定


Scheduler和Actor的最佳实践和示例用例是什么?

您是否可以添加一个示例,说明为什么您认为Actor很复杂,或者您最终如何得到大量样板代码?谢谢您的反馈,请更新!