2012-05-28 38 views
7

需要一些关于如何使用由Java(不是Scala!)中的Akka提供的EventBus的建议。网站上的文件似乎是不完整的:http://doc.akka.io/docs/akka/2.0.1/java/event-bus.htmlJava的Akka EventBus示例

据我了解,演员都应该以对特定消息的反应,如:

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

但现在还不清楚如何将消息发送到事件公共汽车。

有人可以分享一些很好的教程/例子/等?

+0

我已经开了票,以提高文档,同时研究了API: http://doc.akka.io/api/akka/2.0.1/#akka.event.EventStream –

+0

其实我非常想看到这样的例子。目前我们正在使用Guava的EventBus进行简单的GUI事件处理。对于繁重的工作,我想介绍Akka并彻底摆脱番石榴。将两个事件处理库保存在同一个应用程序中有点愚蠢...... –

回答

10

我觉得你只是一个线路短路:

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 

虽然ServerEventHandler应该像

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