В Classi c Актеры вы можете использовать Broadcast
, чтобы отправить сообщение всем акторам в маршрутизаторе, включая ConsistentHashingRouter
. Когда я запускаю приведенный ниже код, я получаю сообщение, полученное по всем трем актерам.
Вы, похоже, используете широковещательную рассылку выше, поэтому я с подозрением отношусь к вашей удаленной конфигурации. Но так как вы не публикуете здесь ничего о настройке удаленного взаимодействия, я мало что могу сделать для устранения неполадок. Я бы рекомендовал использовать маршрутизаторы с поддержкой кластеров вместо удаленного взаимодействия, но я не знаю, связано ли это каким-либо образом с вашей проблемой.
import akka.actor.{Actor, ActorLogging, ActorSystem, Props}
import akka.routing.{Broadcast, ConsistentHashingPool}
import akka.routing.ConsistentHashingRouter.ConsistentHashMapping
object Worker {
def props(): Props = Props(new Worker())
}
class Worker extends Actor with ActorLogging {
def receive = {
case s: String => log.info(s"${self.path.name} : $s")
}
}
object AkkaQuickstart extends App {
val system = ActorSystem("UntypedRouter")
def hashHapping: ConsistentHashMapping = {
case s: String => s
}
val router = system.actorOf(
ConsistentHashingPool(3, hashMapping = hashHapping).props(Worker.props())
)
router ! Broadcast("hello")
}