Scala Play Framework,在哪里创建演员?

Posted

技术标签:

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

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

【问题讨论】:

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


【讨论】:

以上是关于Scala Play Framework,在哪里创建演员?的主要内容,如果未能解决你的问题,请参考以下文章

为 play framework 2.6 配置的默认控制器包在哪里?

Netbeans + Scala + play-framework:找不到 index.html

在 Play Framework 2.4 中为 Scala 实现 Akka

在 Play Framework 2.4 中为 Scala 实现 CORS

Play Framework Routes 中的 Scala 反引号

如何将 IntelliJ 与 Play Framework 和 Scala 一起使用