2015-07-25 14 views
7

Come faccio a mescolare attori digitati e non tipizzati? Come ho capito devo specificare attore principale quando creo un'istanza di ActorSystem come questoCome mescolare attori dattilografati e non tipizzati?

val system: akka.typed.ActorSystem[Start] = akka.typed.ActorSystem("main", Props(mainBehaviour)) 

D'altra parte io uso Akka-http cui viene inizializzata come questo

implicit val system = ActorSystem() 
implicit val executor = system.dispatcher 
implicit val materializer = ActorMaterializer() 
// etc... 

vedo che posso creare sistema digitato dal sistema non tipizzata chiamando

object ActorSystem { 
    def apply(untyped: akka.actor.ActorSystem): ActorSystem[Nothing] = new Wrapper(untyped.asInstanceOf[ExtendedActorSystem]) 
} 

Quindi, supponendo che ho fatto

val typeSystem = akka.typed.ActorSystem(untypedSystem) 

Come si crea il mio primo attore digitato da typeSystem? Non è stato digitato lo ActorContext di cui posso chiamare lo actorOf.

Altri materiali che ho letto su questo argomento sono

risposta

3

Buona cattura, questo non è attualmente convenientemente possibile: quello che si avrebbe bisogno di fare è creare ActorSystem tipizzato e quindi accedere a quello non sagomato sottostante per avviare l'estensione HTTP, ma loIl metodoè private[akka]. Puoi accedere a questo inserendo un codice di aiuto nel tuo progetto all'interno dello spazio dei nomi di Akka, oppure potresti fare il contrario:

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 
+0

Grazie mille! Funziona ma l'intera cosa sembra piuttosto ostile a causa di scontri sul nome. Ho dovuto scrivere 'AskPattern.Askable (typedRef).? (Start)'. – expert

+1

Poi c'è qualcosa di sbagliato nelle importazioni, si prega di aprire un problema su github in modo che possiamo ripararlo correttamente. –

Problemi correlati