2012-11-21 15 views
9

EventBus di Akka funziona con attori remoti?Akka EventBus funziona con attori remoti?

Per quanto posso dire, non supporta questo in modo nativo. Qualcuno può confermare per favore?

Sembra che sarebbe possibile codificare alcuni attori che offrono funzionalità simili. Per esempio. avviare un attore remoto che si abbona a EventBus sul server remoto e inviare nuovamente i messaggi a un attore locale per ripubblicarli sul EventBus locale. Ma non ha senso scrivere questo, se è già supportato!

Grazie

risposta

11

L'EventBus sé è locale, il che significa che gli eventi non vengono trasferiti automaticamente alla EventBuses su altri sistemi, ma è possibile sottoscrivere qualsiasi ActorRef che si desidera, compresi quelli remoti. Hai solo bisogno di un attore sul nodo in cui si generano gli eventi:

case class Subscribe(clazz: Class[_]) 
system.actorOf(Props(new Actor { 
    def receive = { 
    case Subscribe(c) => 
     context.system.eventStream.subscribe(sender, c) 
    } 
}), "eventer") 

allora si può guardare che uno su da host remoti e avere voi stessi sottoscritto.

+0

Grazie Roland. Sembra una buona soluzione. Non avevo twigato che avrei potuto registrare un ActorRef remoto! –

Problemi correlati