2012-05-28 19 views
7

¿Necesitas algún consejo sobre cómo usar EventBus proporcionado por Akka en Java (no Scala!). La documentación en el sitio web parece ser incompleta: http://doc.akka.io/docs/akka/2.0.1/java/event-bus.htmlEjemplo de Akka EventBus para Java

Por lo que he entendido, el actor debe crearse reaccionar ante los mensajes específicos, como:

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

Pero ahora no está claro cómo enviar un mensaje a el autobús del evento.

¿Alguien puede compartir algunos buenos tutoriales/ejemplos/etc.?

+0

He abierto un boleto para mejorar la documentación, en el estudio mientras tanto la API: http://doc.akka.io/api/akka/2.0.1/#akka.event.EventStream –

+0

En realidad, me gustaría mucho ver un ejemplo de eso también. Actualmente estamos utilizando el EventBus de Guava para el manejo simple de eventos GUI. Para trabajos pesados, sin embargo, me gustaría presentar a Akka y deshacerme de la guayaba por completo. Es un poco tonto mantener dos bibliotecas de manejo de eventos en la misma aplicación ... –

Respuesta

10

Creo que eres sólo una línea corta:

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 

Mientras ServerEventHandler debe ser algo como

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