Scala Play框架,如何创建actor?

3

我正在使用Play 2.4.3创建一个CQRS Web应用程序。我的简单问题是:我应该在哪里创建“全局”actor?例如:在哪里实例化/注入监听查询侧事件的actor?


2
我发现最好的方法是使用依赖注入actor作为根actor。 - Odomontois
但是我应该在哪里注入它们呢?它们与任何控制器都没有关联。 - ticofab
无论是否使用控制器,最好将主逻辑实现为具有注入功能的类,而不是对象。并且只在最后一刻使用InjectionBuilder - Odomontois
你必须在某个地方使用这些演员。在使用它们的类中使用依赖注入。 - Kris
如果需要注入演员并且还必须在多个请求之间保持状态,它们应该被声明为 @Singleton 吗? - toidiu
1个回答

1
你可以在Play控制器内实例化演员。 示例
import play.api.libs.concurrent.Akka

object Application extends Controller {

  def actorIgniter = Action {
    val myActor = Akka.system.actorOf(ActorClassName.props())
    Ok
  }

}

通过Play路由调用actorIgniter方法,您可以实例化ActorClassName。您正在使用Play助手(play.api.libs.concurrent.Akka)在Akka actor系统内部实例化actor。
另一种方法是在Play Global对象中实例化主actor。
object Global with GlobalSettings {

  override def onStart(app: Application) {
    Akka.system.actorOf(ActorClassName.props())
  }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接