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