Вот что я нахожу, и для жизни меня не могу найти причину. Я создаю «принтеров», которые в принципе ничего не делают или печатают сообщение в зависимости от типа получаемого сообщения.«Мертвые буквы столкнулись», как только актеры помещаются в роутер
class Printer extends Actor {
def receive = {
case m: SomeMessage => println(m.text)
case _ =>
}
}
Я создаю несколько из этих актеров:
val actor4 = system.actorOf(Props[Printer], "t-4")
val actor5 = system.actorOf(Props[Printer], "t-5")
val actor6 = system.actorOf(Props[Printer], "t-6")
и бросали их в вектор:
val routees2 = Vector[ActorRef](actor4, actor5, actor6)
я делаю выше, так что я могу бросить их в маршрутизатор (и они будут находиться под контролем маршрутизатора). Когда я запускаю спецификацию до этого момента, у меня нет никаких проблем. Как только я помещаю их в маршрутизатор и запускаю спецификацию, у меня возникают проблемы. Вот маршрутизатор:
val router = system.actorOf(Props[Printer].withRouter(
BroadcastRouter(routees = routees2)), "router-to-transformers")
Теперь, когда я бегу спецификации у меня есть все виды мертвых букв ...
[INFO] [09/23/2013 17:10:21.468] [spider-akka.actor.default-dispatcher-6] [akka://spider/user/router-to-transformers] Message [akka.dispatch.sysmsg.DeathWatchNotification] from Actor[akka://spider/user/router-to-transformers#-1845250548] to Actor[akka://spider/user/rout
er-to-transformers#-1845250548] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [09/23/2013 17:10:21.468] [spider-akka.actor.default-dispatcher-6] [akka://spider/user/router-to-transformers] Message [akka.dispatch.sysmsg.DeathWatchNotification] from Actor[akka://spider/user/router-to-transformers#-1845250548] to Actor[akka://spider/user/rout
er-to-transformers#-1845250548] was not delivered. [2] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [09/23/2013 17:10:21.468] [spider-akka.actor.default-dispatcher-6] [akka://spider/user/router-to-transformers] Message [akka.dispatch.sysmsg.DeathWatchNotification] from Actor[akka://spider/user/router-to-transformers#-1845250548] to Actor[akka://spider/user/rout
er-to-transformers#-1845250548] was not delivered. [3] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
Для жизни меня я не могу понять, что происходит здесь , Я добавил ссылку на фрагмент теста. Нумерация, в фрагменте, странна, потому что я разрезал кучу различных попыток, которые были прокомментированы, чтобы не загромождать фрагмент. Я сосредоточен на этом вопросе о мертвых письмах, потому что чувствую, что, когда я добавил больше актеров и фактически начал передавать сообщения, вещи не доставлялись ... http://snipt.org/AhVf0
Стоит напомнить, что эти актеры местный. Я читал что-то о актере. Для того, чтобы быть обесцененным, и мне интересно, если это используется, и отчасти это вызывает мои проблемы? Здесь очень много движущихся частей, а не много стабильной, полной, документации. Любая помощь будет принята с благодарностью.
Вместо использования: 'вал маршрутизатора = system.actorOf (реквизит (CreateDiagnostic) .withRouter (BroadcastRouter (routees = routees2)), «router») 'синтаксис, на который я переключился: val router = system.actorOf (Props (createDiagnostic) .withRouter (BroadcastRouter (nrOfInstances = 3)),« router »), который сделал мертвым -товары уходят. Я предполагаю, что эта вторая реализация - более чистый способ сделать это? Как всегда, спасибо. – MCP