【问题标题】:Scala Play Framework, where to create actors?Scala Play Framework,在哪里创建演员?
【发布时间】:2015-11-18 12:37:13
【问题描述】:

我正在使用 Play 2.4.3 创建 CQRS Web 应用程序。我的简单问题是:我应该在哪里创建“全球”演员?例如:在哪里实例化/注入正在从查询端监听事件的参与者?

【问题讨论】:

  • 我发现的最佳方法是使用dependency injected actor 作为根演员。
  • 但是我应该在哪里注入它们呢?它们与任何控制器都不相关..
  • 控制器与否最好将您的主要逻辑实现为具有注入而不是对象的类。并且仅在最后一刻使用InjectionBuilder
  • 你必须在某个地方使用这些演员。在使用它们的类中使用依赖注入。
  • 如果actor被注入并且还必须跨多个请求维护状态,是否应该将它们声明为@Singleton?

标签: scala playframework akka guice playframework-2.4


【解决方案1】:

您可以在 Play 控制器中实例化 Actor。

示例

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 演员系统中实例化演员。

另一种方法是在 Play Global 对象中实例化主角。

object Global with GlobalSettings {

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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2013-10-28
    • 1970-01-01
    • 2012-07-02
    • 2013-12-26
    • 2010-10-31
    • 1970-01-01
    相关资源
    最近更新 更多