Akka类型的演员和AKka Http -找不到演员RefFactory

jaxagkaj  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(111)

我正在尝试使用类型化的actor版本2.6.3和akka http版本10.1.11,而在非类型化的actor中所有工作都很好,现在我得到了编译错误

object Main extends App {

   def createServer(implicit system: ActorSystem[IdentityCalculated]) = {

implicit val materializer = ActorMaterializer()

 }
 def apply(): Behavior[IdentityCalculated] = {
Behaviors.setup { context =>

  val identityManager = context.spawn(IdentityManager(), "identity-manager")

  implicit val timeout = Timeout(10, TimeUnit.SECONDS)
  implicit val scheduler = context.system.scheduler

  identityManager.tell(CalculateIdentity(context.self))

  Behaviors.receiveMessage{
    case IdentityCalculated(_,_,_) =>
      println("got response")
      Behaviors.same
  }
}

}
ActorSystem(Main(), "credentials-manager")

}

我错过了什么?我想创建http服务器时,我得到的消息,身份已计算如何我得到编译错误在物化创建
主音阶:19:50:需要隐式ActorRefFactory:如果在执行元外部需要隐式ActorSystem,则在执行元内部,这应该是隐式ActorContext [error] implicit瓦尔materializer = ActorMaterializer()[error] ^ [error]找到一个错误
谢谢

puruo6ea

puruo6ea1#

您可以通过替换以下内容来使用经典流(尽管运行在非类型化的ActorSystem上,但它们是类型化的):

implicit val materializer = ActorMaterializer()

implicit val materializer = system.classicSystem
cbwuti44

cbwuti442#

在Akka 2.6中,ActorMaterializer API已被弃用,并引入了一个始终可用的新的系统范围的物化器。要运行流,在作用域中只需要隐式的ActorSystem[T]
只有当您希望使用特定的流操作符与Akka类型的参与者(ActorSourceActorFlowActorSink)进行交互时,才需要akka-stream-typed
但是Akka HTTP API仍然依赖于经典API,因此您可能需要对其进行调整,以便能够绑定HTTP端点。
如果这是您的问题,您可以在Akka HTTP快速入门指南中查看如何操作:https://developer.lightbend.com/guides/akka-http-quickstart-scala/http-server.html

u0njafvf

u0njafvf3#

我必须使用akka-stream-typed而不是akka-stream

相关问题