scala - 运行 Akka 微内核时获取命令行参数?

标签 scala command-line akka microkernel

我有 Akka microkernel以下:

class ServiceKernel extends Bootable {

  val system = ActorSystem("service-kernel")

  def startup = {
    system.actorOf(Props(new Boot(false))) ! Start
  }

  def shutdown = {
    system.shutdown()
  }
}

因为内核扩展了Bootable而不是 App ,如何访问启动内核时使用的命令行参数?例如,如果我使用 start namespace.ServiceKernel -d rundevmode 运行内核或类似。谢谢!

附加信息

我认为在微内核中添加有关启动脚本的信息是值得的。在 /bin/start您注意到以下几点:
#!/bin/sh

AKKA_HOME="$(cd "$(cd "$(dirname "$0")"; pwd -P)"/..; pwd)"
AKKA_CLASSPATH="$AKKA_HOME/config:$AKKA_HOME/lib/*"
JAVA_OPTS="-Xms256M -Xmx512M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2"

java $JAVA_OPTS -cp "$AKKA_CLASSPATH" -Dakka.home="$AKKA_HOME" akka.kernel.Main "$@"

虽然 om-nom-nom 最初建议 -D选项,看起来它正在使用中,主要启动参数正在传递给 akka.kernel.Main类(在这种情况下是上面的 ServiceKernel 类)。

最佳答案

这是最小的例子:

object Foo extends App {
    val debugModeOn = System.getProperty("debugmode") != null
    val msg = if (debugModeOn) "in debug mode" else "not in debug mode"
    println(msg)
}

» scala Foo -Ddebugmode
in debug mode
» scala Foo            
not in debug mode

你可以做额外的检查来克服这个问题:
» scala Foo -Ddebugmode=false
in debug mode

附言您可能还想使用 Properties helper ,其中包含一堆方法,如 propOrNone、propOrElse 等

关于scala - 运行 Akka 微内核时获取命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15888579/

相关文章:

scala - 通过对存储在列表中的字段宽度值进行切片/分割,将 apache-spark 数据帧字符串列拆分为多个列

list - Scala,无限重复有限列表

Java - Linux 上的命令行 : I don't have any output after I run the code

multithreading - 允许actor定期替换共享的不可变只读状态是 “ok”吗?

scala - Play 2.1.1 未加载自定义 Akka 调度程序

scala - Lisp 宏和 Scala 宏有什么区别?

scala - 使用路径相关类型参数覆盖函数

macos - 命令行实用程序,可将通知发送到Mountain Lion中的Notification Center

c++ - 在命令行上使用 Visual Studio 进行编译时如何包含库?

java - 使用 Actor Supervised ,如果发生失败,如何以定义的时间间隔重试相同的消息定义的次数