首页 > 解决方案 > 如何实现 Akka 演员工厂?

问题描述

假设我有响应消息“读取”的 DAO Actor(CassDaoActor、VerticaDaoActor 等)。

首先,有没有办法表达一个接口或抽象类来定义扩展参与者应该实现的消息“读取”?

现在假设只有在运行时我才能知道需要根据配置的数据库创建哪个 Actor。例如,如果配置的数据库是 cassandra,我需要创建 CassDaoActor 等。这显然是我们所知道的工厂方法模式的典型用例。我想了解我们如何实现这样的事情?显然我们不能传递“上下文”,因为它会丢失参与者范围之外的内容。

请建议。

到目前为止,我尝试的是,我将基于配置的数据库的相应道具返回给我需要在其中创建这些演员的演员。

object `package` {
  val CASS = "cass"
  val VERTICA = "vertica"

  def getDAOProps(db: String): Props = db match {
    case CASS => CassDaoActor.props
    case VERTICA => VerticaDaoActor.props
  }
}


// SupervisorActor
val db = configuredDb()
context.actorOf(getDAOProps(db), db)

标签: scalaakka

解决方案


推荐阅读