2

我正在寻找有关如何编写自定义 application.conf 的教程。我阅读了 akka 文档并尝试了 Pi 示例。

但现在我想运行我自己的配置。我的目标是覆盖路由器类型并更改路由的数量。这是我的代码:

package org.sddb.playground

import akka.actor._
import com.typesafe.config.ConfigFactory
import akka.routing.RoundRobinRouter

object Test extends App {

  case object Log
  case object Ask

  class Tester extends Actor with ActorLogging {

    def receive = {
      case Log => logging
      case Ask => answer
    }

    def logging {
      log error "error"
      log warning "warning"
      log debug "debug"
    }

    def answer {
      log info "somebody asked"
    }
  }
  val config = ConfigFactory.load
  val system = ActorSystem("TestSystem", config.getConfig("test"))
  val tester = system.actorOf(Props[Tester].withRouter(RoundRobinRouter(2)))
  tester ! Log
  tester ! Ask
  tester ! PoisonPill
  system.shutdown
}

我的 application.config 看起来是这样的:

test {
  akka.loglevel = DEBUG
  deployment {
    /tester {
      router = broadcast
      nr-of-instances = 5
    }
  }
}

调试级别的登录是可以的,但既没有广播也没有 5 个实例。我的错误在哪里?

4

1 回答 1

5

那是因为您正在显式创建 RoundRobinRouter(2) 。你必须通过FromConfig(),而且你必须通过“tester”作为名称。

编辑:

您的配置部分错误,应该是:

test {
  akka.loglevel = DEBUG
  akka.actor.deployment {
    /tester {
      router = broadcast
      nr-of-instances = 5
    }
  }
}

但你也可以这样做

akka {
  loglevel = DEBUG
  actor {
    deployment {
      /tester {
        router = broadcast
        nr-of-instances = 5
      }
    }
  }
}

那么您不必手动传递配置。

于 2012-05-04T09:58:28.497 回答