Akka HTTP 与 Akka Typed 一起工作吗?
Does Akka HTTP work with Akka Typed?
val behavior: Behavior[Message] = Behaviors.setup {
actorContext ⇒
logger.info("starting...")
implicit val actorSystem = actorContext.system.asInstanceOf[ActorSystem]
implicit val materializer = ActorMaterializer()(actorContext.asInstanceOf[ActorContext])
implicit val executionContext = actorContext.executionContext
val route =
path("hello") {
get {
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say hello to akka-http</h1>"))
}
}
val bindingFuture = Http().bindAndHandle(route, "localhost", 8888)
编译没问题,但是当我 运行 我的代码时,我得到
20:44:22.586 [Leaderboard-akka.actor.default-dispatcher-3] INFO net.kolotyluk.leaderboard.service.REST$ - starting...
[ERROR] [04/02/2018 20:44:22.592] [Leaderboard-akka.actor.default-dispatcher-2] [akka://Leaderboard/user/Http]
akka.actor.typed.internal.adapter.ActorSystemAdapter cannot be cast to akka.actor.ActorSystem
akka.actor.ActorInitializationException: akka://Leaderboard/user/Http: exception during creation
有什么简单的解决方法吗?我怎样才能给 Http()
ActorSystem 所需的东西?
Akka Typed 似乎不能很好地与其他 Akka 库一起使用
您的代码似乎是将类型化的 ActorSystem 转换为非类型化的 ActorSystem,因此出现错误。而是使用适配器:
import akka.actor.typed.scaladsl.adapter._
val bindingFuture = Http(actorContext.system.toUntyped).bindAndHandle(route, "localhost", 8888)
下面是一个测试类似功能是否有效的示例:
val behavior: Behavior[Message] = Behaviors.setup {
actorContext ⇒
logger.info("starting...")
implicit val actorSystem = actorContext.system.asInstanceOf[ActorSystem]
implicit val materializer = ActorMaterializer()(actorContext.asInstanceOf[ActorContext])
implicit val executionContext = actorContext.executionContext
val route =
path("hello") {
get {
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say hello to akka-http</h1>"))
}
}
val bindingFuture = Http().bindAndHandle(route, "localhost", 8888)
编译没问题,但是当我 运行 我的代码时,我得到
20:44:22.586 [Leaderboard-akka.actor.default-dispatcher-3] INFO net.kolotyluk.leaderboard.service.REST$ - starting...
[ERROR] [04/02/2018 20:44:22.592] [Leaderboard-akka.actor.default-dispatcher-2] [akka://Leaderboard/user/Http]
akka.actor.typed.internal.adapter.ActorSystemAdapter cannot be cast to akka.actor.ActorSystem
akka.actor.ActorInitializationException: akka://Leaderboard/user/Http: exception during creation
有什么简单的解决方法吗?我怎样才能给 Http()
ActorSystem 所需的东西?
Akka Typed 似乎不能很好地与其他 Akka 库一起使用
您的代码似乎是将类型化的 ActorSystem 转换为非类型化的 ActorSystem,因此出现错误。而是使用适配器:
import akka.actor.typed.scaladsl.adapter._
val bindingFuture = Http(actorContext.system.toUntyped).bindAndHandle(route, "localhost", 8888)
下面是一个测试类似功能是否有效的示例: