2017-02-28 52 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,你介意接受我的回答 –

相關問題