我開發了一個基於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");
}
重點是你可以在你的簡歷中加入「Akka expert」。 –
@TomAnderson我在想同樣的事情哈哈。關鍵是你要開發一個「Akka Kernel」哇!不管那意味着什麼大聲笑。 –