微内核

注:本节未经校验,如有问题欢迎提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
  2. import akka.actor.{ Actor, ActorSystem, Props }
  3. import akka.kernel.Bootable
  4. case object Start
  5. class HelloActor extends Actor {
  6. val worldActor = context.actorOf(Props[WorldActor])
  7. def receive = {
  8. case Start => worldActor ! "Hello"
  9. case message: String =>
  10. println("Received message '%s'" format message)
  11. }
  12. }
  13. class WorldActor extends Actor {
  14. def receive = {
  15. case message: String => sender() ! (message.toUpperCase + " world!")
  16. }
  17. }
  18. class HelloKernel extends Bootable {
  19. val system = ActorSystem("hellokernel")
  20. def startup = {
  21. system.actorOf(Props[HelloActor]) ! Start
  22. }
  23. def shutdown = {
  24. system.shutdown()
  25. }
  26. }