2012-05-28 14 views
7

Hai bisogno di qualche consiglio su come utilizzare EventBus fornito da Akka in Java (non in Scala!). La documentazione sul sito web sembra essere incompleta: http://doc.akka.io/docs/akka/2.0.1/java/event-bus.htmlEsempio di Akka EventBus per Java

Per quanto ho capito, l'attore deve essere creato per reagire a messaggi specifici, come:

final ActorSystem actorSystem = ActorSystem.create("ServerEvents"); 
final ActorRef actor = actorSystem.actorOf(new Props(SeverEventHandler.class)); 
actorSystem.eventStream().subscribe(actor,ServerMessage.class); 

Ma ora non è chiaro come inviare un messaggio a il bus degli eventi.

Qualcuno può condividere alcuni buoni tutorial/esempi/ecc.?

+0

ho aperto un biglietto per migliorare la documentazione, nello studio frattempo l'API: http://doc.akka.io/api/akka/2.0.1/#akka.event.EventStream –

+0

In realtà mi piace molto vedere un esempio anche di questo. Attualmente stiamo usando l'EventBus di Guava per una semplice gestione degli eventi della GUI. Per lavori pesanti, tuttavia, vorrei presentare Akka e sbarazzarmi del tutto di Guava. È un po 'sciocco tenere due librerie di gestione degli eventi nella stessa applicazione ... –

risposta

10

Credo che tu sia solo una linea breve:

final ActorSystem actorSystem = ActorSystem.create("ServerEvents"); 
final ActorRef actor = actorSystem.actorOf(new Props(SeverEventHandler.class)); 
actorSystem.eventStream().subscribe(actor,ServerMessage.class); 

actorSystem.eventStream().publish(new ServerMessage()); <<== add this 

Mentre ServerEventHandler dovrebbe essere qualcosa di simile

public class ServerEventHandler extends UntypedActor { 
    @Override 
    public void onReceive(final Object message) { 
    System.out.println("Got event in thread: " + Thread.currentThread().getName()); 
    System.out.println("Event: " + message); 
    } 
}