scala - 使用 Akka 和 sbt 启用波浪号触发器

标签 scala sbt akka

使用 sbt 可以执行 ~run 以在源更改时重新编译和运行程序。但是,一旦创建了 ActorSystem,它就不再起作用了。

当系统关闭时它可以工作,但我不想关闭系统。

import akka.actor.ActorSystem

object Test {
  def main(args: Array[String]) : Unit = {
    val system = ActorSystem()

    // if this line is removed, source code detection is disabled
    system.shutdown()
  }
}

有什么解决方法吗?

最佳答案

您必须记住,SBT ~run 本身不是热重载,它只是“一旦进程完成,请再次运行”。 Akka 的线程池是非守护进程的,这意味着在 ActorSystem 处于“事件状态”之前,程序不会终止,因此 SBT 的 ~run 不会再次触发。

相反,您可能想查看 sbt-revolver SBT 插件,可以满足您的需求(包括基于 Akka 的应用程序)。

关于scala - 使用 Akka 和 sbt 启用波浪号触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871749/

相关文章:

scala - 刚刚下载了Scala Lift聊天应用,按照说明运行,但是失败了

scala - 如何管理 Akka 使用的核心数?

java - 当编译 Scala 程序中导入的 Java 库时,Scala 编译器是否调用 javac?

scala - 如何在命令行中从 build.sbt 中提取数据

mysql - jOOQ 为嵌套选择生成的 SQL 在 MySQL/MariaDB 中不起作用

scala - 使用 spark-submit 运行时无法加载 com.databricks.spark.csv

java - 先前操作的函数出现 NoClassDefFoundError

scala - 检查远程Akka actor是否可用

scala - Flink 可以处理单个表/窗口约 50 GB 的状态吗?

scala - Akka Actor 的状态未得到正确监控