Scala 如何在Akka中实现基于Actor的HTTP路由

Scala 如何在Akka中实现基于Actor的HTTP路由,scala,akka,akka-http,macwire,Scala,Akka,Akka Http,Macwire,我是阿克卡的新手。在学习的过程中,我在上创建了一个示例项目。本项目使用了Akka,Akka HTTP,Slick,Flyway和Macwire。我想为HTTP路由实现Akka Actors。我试图在redis上实现这个功能,但没有按预期工作 当前,控制器的工作方式如下: class AuthController(userService: UserService[Future]) extends Controller { import de.heikoseeberger.akkahttpjs

我是阿克卡的新手。在学习的过程中,我在上创建了一个示例项目。本项目使用了
Akka
Akka HTTP
Slick
Flyway
Macwire
。我想为HTTP路由实现Akka Actors。我试图在redis上实现这个功能,但没有按预期工作

当前,
控制器
的工作方式如下:

class AuthController(userService: UserService[Future]) extends Controller {

  import de.heikoseeberger.akkahttpjson4s.Json4sSupport._
  implicit val serialization: Serialization.type = jackson.Serialization // or native.Serialization
  implicit val formats: DefaultFormats.type = DefaultFormats

  override def route: Route = pathPrefix("users") {
    pathEndOrSingleSlash {
      register
    }
  }

  private def register = {
    (post & entity(as[RegistrationData])) { registrationData =>
      complete(userService.registerUser(registrationData))
    }
  }

}
但我试图通过对现有代码的一些更改来实现类似的功能:

class AuthController(userhandler: ActorRef) extends Controller {

  import de.heikoseeberger.akkahttpjson4s.Json4sSupport._
  implicit val serialization: Serialization.type = jackson.Serialization // or native.Serialization
  implicit val formats: DefaultFormats.type = DefaultFormats

  override def route: Route = pathPrefix("users") {
    pathEndOrSingleSlash {
      register
    }
  }

  private def register = {
    (post & entity(as[RegistrationData])) { registrationData =>
      complete(
        (userHandler ? UserHandler.Register(registrationData)).map {
          case true => OK -> s"Thank you ${registrationData.username}"
          case _ => InternalServerError -> "Failed to complete your request. please try later"
        }
      )
    }
  }

}

有人能建议我如何实施上述措施吗?非常感谢您的帮助。

在询问此类问题时,请包括您看到的错误。在这里,我假设它是关于丢失的执行上下文(供将来运行)以及
超时
,请阅读有关
询问
(又称
)模式的更多信息:

一般来说,您所缺少的(因为不确定您的问题到底是什么)可以通过以下方式解决:

import system.dispatcher//将使用的ExecutionContext

系统为参与者系统,且:

implicit val timeout=超时(5秒)//下面的
需要

您也可以通过以下路线: