2017-02-28 29 views
1

我使用Akka Essentials Book的示例编写了我的第一个Akka响应式应用程序,但是当我想要打印Result对象时显示一个空值“{}”。结果应该是:'{galaxia,lejana,mucho,tiempo,vivia,guerrero,esperada,encontrarse}'。这个例子最初与akka 2.0.3一起工作。使用Java 8的Akka Essentials:返回第一个示例的结果

我的pom文件调用akka 2.4.16,我的项目没有错误,有人可以帮我吗?

所有源代码是here

public class MapReduceApplication { 
    public static void main(String[] args) throws Exception { 
     ActorSystem _system = ActorSystem.create("MapReduceApp"); 
     ActorRef master = _system.actorOf(Props.create(MasterActor.class),"master"); 

     master.tell("en una galaxia lejana hace mucho mucho tiempo", ActorRef.noSender()); 
     master.tell("vivia un guerrero que esperaba encontrarse con el guerrero de una galaxia proxima", ActorRef.noSender()); 

     Thread.sleep(5000); 

     Result msg = new Result(); 
     Timeout timeout = new Timeout(Duration.create(5, TimeUnit.SECONDS)); 
     Future<Object> future = Patterns.ask(master, msg, timeout); 
     String result = (String) Await.result(future, timeout.duration()); 
     System.out.println(result); 
     _system.terminate(); 
    } 

} 
+0

...数据,因此,什么'MasterActor'办?什么是结果? –

+0

所有源代码:https://github.com/randiel/wogo – randiel

回答

2

我觉得你有聚合演员定义的问题。它不应该被路由到5名演员的游泳池,而是应该只有1聚合所有 你可以通过改变它修复你的代码

ActorRef aggregateActor = getContext().actorOf(Props.create(AggregateActor.class),"aggregate"); 
+0

你是绝对正确的。这实际上就是代码写在Akka Essentials书中的方式。 – tomkab

+0

谢谢!很多! – randiel

+0

@ randiel,你介意接受我的回答 –

相关问题