【发布时间】:2018-10-16 09:17:26
【问题描述】:
我有一个扩展 App 的对象,我在其中创建了 Actor System 和 Actor Materializer,并在给定的 Actor 系统下创建了一个 Actor。
object QuickstartServer extends App with UserRoutes {
implicit val system: ActorSystem = ActorSystem("helloAkkaHttpServer")
implicit val materializer: ActorMaterializer = ActorMaterializer()
val userRegistryActor: ActorRef = system.actorOf(UserRegistryActor.props, "userRegistryActor")
lazy val routes: Route = userRoutes
Http().bindAndHandle(routes, "localhost", 8080)
}
现在 UserRoutes 包含所有路由
trait UserRoutes extends JsonSupport {
implicit def system: ActorSystem
lazy val log = Logging(system, classOf[UserRoutes])
def userRegistryActor: ActorRef
lazy val userRoutes: Route =
pathPrefix("users") {
concat(
pathEnd {
concat(
get {
val users: Future[Users] =
(userRegistryActor ? GetUsers).mapTo[Users]
//Remaining code
现在我的问题是 Actor System 和在 QuickstartServer 中创建的 userRegistryActor Actor 是如何注入到路由文件中的?
你可以在这里找到完整的代码https://developer.lightbend.com/guides/akka-http-quickstart-scala/backend-actor.html
【问题讨论】: