2012-05-28 6 views
7

Brauchen Sie einen Hinweis, wie EventBus von Akka in Java (nicht Scala!) Verwendet werden soll. Die Dokumentation auf der Website scheint unvollständig zu sein: http://doc.akka.io/docs/akka/2.0.1/java/event-bus.htmlBeispiel für Akka EventBus für Java

Soweit ich verstand, Schauspieler sollten auf bestimmte Nachrichten, wie zu reagieren erstellt werden: es ist nicht klar

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

Aber jetzt, wie eine Nachricht senden der Eventbus.

Kann jemand bitte einige gute Tutorials/Beispiele/etc teilen?

+0

Ich habe ein Ticket eröffnet die API die Dokumentation zu verbessern, in der Zwischenzeit Studie sein sollte: http://doc.akka.io/api/akka/2.0//#akka.event.EventStream –

+0

Eigentlich möchte ich auch ein Beispiel dafür sehen. Momentan verwenden wir den EventBus von Guava für einfache GUI-Ereignisbehandlung. Für schwere Arbeit möchte ich jedoch Akka vorstellen und Guava ganz loswerden. Es ist ein wenig dumm, zwei Ereignisbehandlungsbibliotheken in derselben Anwendung zu behalten ... –

Antwort

10

Ich glaube, Sie sind nur eine Zeile kurz:

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 

Während ServerEventHandler so etwas wie

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); 
    } 
}