我找不到Akka中RoundRobingGroup的工作示例(文档中的示例无法帮助我)。我想在一个RoundRobinGroup中绑定两个actor并且只用Akka发送简单消息(通过路由器变量),但我总是在日志中收到deadletter。
object Main extends App {
val system = ActorSystem()
val paths = List("w1", "w2")
val w1 = system.actorOf(Props[HelloActor], name = "w1")
val w2 = system.actorOf(Props[HelloActor], name = "w2")
val router = system.actorOf(new RoundRobinGroup(paths).props(), "shard")
router ! "hello"
}
我想知道我的错误在哪里。
答案 0 :(得分:0)
您可以做的是使用两个HelloActor和Routers实例创建一个路由器 并使用RoundRobinRoutingLogic作为路由逻辑。 您可以在此处获取详细信息:http://doc.akka.io/docs/akka/current/scala/routing.html
希望我解决了你的问题!
答案 1 :(得分:-1)
它解决了我的问题
class Master extends Actor {
var router = {
val routees = Vector.fill(2) {
val mappings = context.actorOf(Props[HelloActor])
context watch mappings
ActorRefRoutee(mappings)
}
Router(RoundRobinRoutingLogic(), routees)
}
def receive = {
case message: String =>
router.route(message, sender())
case Terminated(a) =>
router = router.removeRoutee(a)
val r = context.actorOf(Props[HelloActor])
context watch r
router = router.addRoutee(r)
}
}
class HelloActor extends Actor {
override def receive: Receive = {
case "hello" => println("Another actor said hello")
case _ => println("Unrecognized message")
}
}
object Main extends App {
val system = ActorSystem()
val master = system.actorOf(Props[Master], name = "parent")
master ! "hello"
}