Мне нужно определить, был ли отправитель сообщения одним из локальных или удаленных субъектов в кластере Akka. В настоящее время я нашел единственный способ сделать это:
def isLocal(sndr: ActorRef) = sndr.path.address.toString == context.system.toString
Что лучше?
Я использую Akka 2.3
Обновление: чтобы объяснить, почему я хочу это сделать, на случай, если есть способ полностью избежать проблемы.
На каждом узле маршрутизатор управляет несколькими участниками, выполняющими работу. Рабочие акторы отправляют результаты обратно локальному главному актору, и им назначаются новые задания через ссылку отправителя. Ведущие субъекты также периодически отправляют результаты ведущим субъектам других узлов, гарантируя, что данные случайным образом «перемешиваются» между мастерами на разных узлах. В случае данных, поступающих от удаленного субъекта, принимающий мастер не должен пытаться выделить новую работу. По сути, это реализация метода островов со смешиванием.