Hello Friends, I need your help in figuring out what is going wrong here. I have posted this question in SO too.
I am using Akka Cluster (version 2.4.10) with few nodes designated for "front-end" role and few others as "workers". The workers are on remote machines. The incoming work is distributed by the front-end actor to workers by round-robin routing. The issue is sending back the response from the "workers" back to the front-end actor. I can see that the work is getting completed by the workers. But the message sent back by the workers to front-end does not reach and ends up as dead-letters. I see the below error in the log. [Cluster-akka.actor.default-dispatcher-21] [akka://Cluster/deadLetters] Message [scala.collection.immutable.$colon$colon] from Actor[akka://Cluster/user] to Actor[akka://Cluster/deadLetters] was not delivered. [6] dead letters encountered. The round-robin router configuration is as below. akka.actor.deployment { /frontEnd/hm = { router = round-robin-group nr-of-instances = 5 routees.paths = ["/user/hmWorker"] cluster { enabled = on use-role = backend allow-local-routees = on } } } The router is instantiated in front-end actor like below. val router = context.actorOf(FromConfig.props(), name = "hm") val controller = context.actorOf(Props(classOf[Controller], router)) The controller and the worker codes are below. // Node 1 : Controller routes requests using round-robin class Controller(router: ActorRef) extends Actor { val list = List("a", "b") // Assume this is a big list val groups = list.grouped(500) override def receive: Actor.Receive = { val futures = groups.map(grp => (router ? Message(grp)).mapTo[List[String]])) val future = Future.sequence(futures).map(_.flatten) val result = Await.result(future, 50 seconds) println(s"Result is $result") } } // Node 2 class Worker extends Actor { override def receive: Actor.Receive = { case Message(lst) => val future: Future[List[String]] = // Do Something asynchronous future onComplete { case Success(r) => sender.!(r)(context.parent) // This message is not delivered to Controller actor. case Failure(th) => // Some error handling } } } Appreciate your help. -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+unsubscr...@googlegroups.com. To post to this group, send email to akka-user@googlegroups.com. Visit this group at https://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.