2014-05-02 61 views
0

對演員框架內的演員提出了一個問題。免責聲明 - 我仍然對演員/ AKKA不熟悉,現在通過閱讀文檔花費了相當長的一段時間。我很抱歉,如果下面的任何答案已經記錄在某處,我已經錯過了。正確使用演員框架中的演員(java)

我想確認的是,我在執行一個正確的/慣用的解決了以下場景:

案例: 使用播放框架,我需要這樣的執行代碼,阻止(SQL查詢)一種不妨礙我的網絡服務器其餘部分的方式。

下面是我目前的解決方案和一些問題:

static ActorRef actorTest = Akka.system().actorOf(
     Props.create(ActorTest.class)); 
    public static Promise<Result> runQuery() { 
      Promise<Result>r = Promise.wrap(
    Patterns.ask(actorTest, query, 600000)).map(
        new Function<Object, Result>() { 
         public Result apply(Object response) { 
          return ok(response.toString()); 
         } 
        }); 
      return r; 
     } 
  1. 現在,如果我得到很多請求將他們simpley進入,因爲它們是由演員處理的無界隊列?或者,
  2. 我已閱讀actor routing.上的一些文檔我是否必須照顧這個問題,即製作一個路由器actor,而不是使用某種路由邏輯向子actor發送查詢?或者是以上所有在玩框架中照顧?
  3. 如何配置上述參與者致死的thred數量(請參閱application.conf文件)。

以上任何解釋將不勝感激。

回答

1

我使用的主要是Scala與Akka和Play,所以我可能會誤導你,但讓我們試試吧。

首先,你可以溝角色爲你想要的任務。我只是在未來運行計算。

用戶演員,當你需要有一些狀態。通過異步意味着運行查詢對於Future來說會很好。

Futures和Actora在ExecutionContext上運行,通過導入和引用使用默認輪迴在Scala中可用。這在Java中可能有所不同,但可能並不多。默認的ExecutionContext是在application.conf中配置的,就像你說的。