2013-06-27 11 views
5

我開發了一個基於Akka的服務器,並且喜歡Microkernel的想法。然而,當我看implementation details using Java and Maven我交易一個簡單的Java主啓動類的許諾我不需要編寫啓動腳本,並在年底,我覺得它需要一個框架,具體的解決方案:使用Java和Maven的Akka Microkernel有什麼意義?

  • 安裝阿卡(我可以工作,否則沒有安裝阿卡僅使用庫)
  • 我需要兩個額外的Maven相關的變化和附加組件神器
  • 我還需要一個「啓動」腳本,這樣有什麼意義?

也許我錯過了什麼?但與簡單的舊Java主要解決方案相比,我看不到任何更簡單的設置或優勢。

更新:得到答案後多思考一下。根據Microkernel編寫主類可能還有一個很好的例子,以便將來可以通過Akka控制檯啓動它,例如,

public class MapReduceServer implements Bootable { 
    //--------------------------------------------------------------- 
    // public 
    //--------------------------------------------------------------- 
    /** 
    * Default constructor simply initializes the system. 
    */ 
    public MapReduceServer() { 
     system = ActorSystem.create("MapReduceApp", ConfigFactory. 
       load().getConfig("MapReduceApp")); 
    } 

    //--------------------------------------------------------------- 
    /** 
    * {@inheritDoc} 
    */ 
    @Override 
    public void startup() { 
     // create the list of reduce Actors 
     ActorRef reduceActor = system.actorOf(Props.create(ReduceActor.class) 
       .withRouter(new FromConfig()), "reduceActor"); 

     // create the list of map Actors 
     ActorRef mapActor = system.actorOf(Props.create(MapActor.class, reduceActor). 
       withRouter(new FromConfig()), "mapActor"); 

     // create the overall Master Actor that acts as the remote actor for clients 
     @SuppressWarnings("unused") 
     ActorRef masterActor = system.actorOf(
       Props.create(MapReduceMasterActor.class, mapActor), "masterActor"); 
    } 

    //--------------------------------------------------------------- 
    /** 
    * {@inheritDoc} 
    */ 
    @Override 
    public void shutdown() { 
     system.shutdown(); 
    } 

    //--------------------------------------------------------------- 
    /** 
    * Main method 
    * 
    * @param args 
    */ 
    public static void main(String[] args) { 
     MapReduceServer mapReduceServer = null; 

     LOGGER.info("starting ..."); 
     mapReduceServer = new MapReduceServer(); 
     mapReduceServer.startup(); 
     LOGGER.info("done"); 
    } 
+0

重點是你可以在你的簡歷中加入「Akka expert」。 –

+0

@TomAnderson我在想同樣的事情哈哈。關鍵是你要開發一個「Akka Kernel」哇!不管那意味着什麼大聲笑。 –

回答

8

Microkernel在使用sbt時可以很方便地作爲打包機制,但對於Maven用戶,我同意它不會增加任何價值。我認爲你應該使用主類,並用maven的方式打包你的應用程序。

+0

有道理,謝謝。 –

0

至少微內核爲您節省了關機掛鉤的定義(處理CTRL-C)。在簡單的主要方法這是你的關注。當然沒有什麼特別的或者花式的。