How do I mix typed and untyped actors ? As I understood I have to specify main actor when I create instance of ActorSystem
like this
val system: akka.typed.ActorSystem[Start] = akka.typed.ActorSystem("main", Props(mainBehaviour))
On the other hand I use akka-http which is initialized like this
implicit val system = ActorSystem()
implicit val executor = system.dispatcher
implicit val materializer = ActorMaterializer()
// etc...
I see that I can create typed system from untyped system by calling
object ActorSystem {
def apply(untyped: akka.actor.ActorSystem): ActorSystem[Nothing] = new Wrapper(untyped.asInstanceOf[ExtendedActorSystem])
}
So assuming I did
val typeSystem = akka.typed.ActorSystem(untypedSystem)
how do I create my first typed actor from typeSystem
? There is no typed ActorContext
whose actorOf
I can call.
Other materials I've read on the subject are
Good catch, this is currently not conveniently possible: what you would need to do is to create the typed ActorSystem and then access the underlying untyped one in order to start the HTTP extension, but the underlying
method is private[akka]
. You could access this by placing some helper code in your project within the Akka namespace, or you could go the other way around:
implicit val untyped = akka.actor.ActorSystem("main")
import untyped.dispatcher
implicit val mat = ActorMaterializer()
import akka.typed.Ops._
val typedRef = untyped.spawn(Props(mainBehaviour))
val typedSys = ActorSystem(untyped)
Http().bind(...) // and send things to typed
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With