微内核

注:本节未经校验,如有问题欢迎提issue

Akka微内核的目的是提供一个捆绑机制,以便将 Akka 应用程序作为一个单一有效载荷分发,而不需要在 Java 应用程序服务器中运行,或手动创建一个启动脚本。

Akka 微内核包含在Akka下载中.

要通过微内核运行应用,你需要创建一个 Bootable 类来处理应用的启动和关闭。下面例子中有介绍。

将你的应用jar包放在 deploy 目录下,并把依赖放入lib目录下以便自动装载并放在类路径中。

要启动内核使用 bin 目录下的脚本, 将应用启动类传进来.

以下是akka下载包中的一个应用与微内核一起运行的例子. 它可以用以下的命令运行 (在unix系统上): 启动脚本添加 config 目录作为类路径第一个元素,其次是lib/*。它以akka.kernel.Main为主类运行 java 并提供引导类作为参数。

(基于 unix 的系统)示例命令:

1. bin/akka sample.kernel.hello.HelloKernel

使用 Ctrl-C 来中断并退出微内核.

在Windows机器上你可以使用 bin/akka.bat 脚本.

以下是Hello Kernel 示例 (参考 HelloKernel创建一个Bootable 类):

1. package sample.kernel.hello

3. import akka.actor.{ Actor, ActorSystem, Props }
4. import akka.kernel.Bootable

6. case object Start

8. class HelloActor extends Actor {
9. val worldActor = context.actorOf(Props[WorldActor])

11. def receive = {
12. case Start => worldActor ! "Hello"
13. case message: String =>
14. println("Received message '%s'" format message)
15. }
16. }

18. class WorldActor extends Actor {
19. def receive = {
20. case message: String => sender() ! (message.toUpperCase + " world!")
21. }
22. }

24. class HelloKernel extends Bootable {
25. val system = ActorSystem("hellokernel")

27. def startup = {
28. system.actorOf(Props[HelloActor]) ! Start
29. }

31. def shutdown = {
32. system.shutdown()
33. }
34. }