Ecco cosa sto trovando, e per la vita di me non riesco a individuare il motivo. Sto creando degli attori "di stampa" che sostanzialmente non fanno nulla o stampano un messaggio in base al tipo di messaggio che ricevono."Le lettere morte si incontrano" non appena gli attori sono collocati nel router
class Printer extends Actor {
def receive = {
case m: SomeMessage => println(m.text)
case _ =>
}
}
Sto creando diversi di questi attori:
val actor4 = system.actorOf(Props[Printer], "t-4")
val actor5 = system.actorOf(Props[Printer], "t-5")
val actor6 = system.actorOf(Props[Printer], "t-6")
e gettandoli in un vettore:
val routees2 = Vector[ActorRef](actor4, actor5, actor6)
che sto facendo quanto sopra in modo che io possa gettare nella un router (e saranno sotto il controllo del router). Quando eseguo le specifiche fino a questo punto, non ho alcun problema. Non appena li metto in un router ed eseguo le specifiche, sto avendo problemi. Ecco il router:
val router = system.actorOf(Props[Printer].withRouter(
BroadcastRouter(routees = routees2)), "router-to-transformers")
Ora, quando ho eseguito le specifiche che ho tutti i tipi di lettere morte ...
[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'.
Per la vita di me non riesco a capire cosa sta succedendo qui . Ho aggiunto un link a uno snippet del test. La numerazione, nello snippet, è strana perché ho tagliato diversi tentativi che sono stati commentati in modo da non ingombrare lo snippet. Mi sono concentrato su questo tema dead-lettere perché mi sento come quando ho aggiunto un più attori e in realtà iniziato a passare i messaggi in giro, le cose non sono stati sempre consegnati ... http://snipt.org/AhVf0
Vale la pena chiedono che questi attori sono Locale. Ho letto qualcosa sull'attorePer essere ammortizzato e mi chiedo se venga usato e in parte è ciò che sta causando i miei problemi? Ci sono così tante parti mobili qui però e non molta documentazione stabile, COMPLETA. Qualsiasi aiuto sarebbe molto apprezzato.
Invece di usare il: router val = system.actorOf (Props (CreateDiagnostic) .withRouter '(BroadcastRouter (routees = routees2)), sintassi "router") 'Sono passato a:' val router = system.actorOf (Puntatori (createDiagnostic) .withRouter (BroadcastRouter (nrOfInstances = 3)), "router") 'che ha reso il dead -Le lettere vanno via. Suppongo che questa seconda implementazione sia il modo più semplice per farlo? Come sempre, grazie. – MCP