Акка АктерДа против прохождения ActorRef - программирование
Подтвердить что ты не робот

Акка АктерДа против прохождения ActorRef

Я изучаю Акку, и я пытаюсь понять, как заставить актеров разговаривать друг с другом (позвоните им A и B). Это не сценарий запроса/ответа, A и B отправляют друг другу сообщения в любое время.

В настоящий момент у меня есть два брата, которые передают сообщения друг другу в обоих направлениях. Оба они создаются непосредственно на ActorSystem. Я изначально передал ActorRef of A в конструктор B. Но я не могу передать ActorRef of B в конструктор A, потому что он еще не существует, т.е. Я не могу использовать этот метод для циклических ссылок.

Я читал о actorFor, и это позволило бы мне взглянуть на актера, используя его путь. Тем не менее, мне не нравится эта настройка, потому что, если путь изменится, он не будет пойман компилятором.

Другая альтернатива, учитывая, что у каждого актера есть доступ к этому родительскому объекту, заключается в передаче сообщений от A и B родительскому объекту, а затем родительскому сообщению передается сообщение до A и B. Но это связывает родителя с типами сообщений, передаваемых взад и вперед.

Какими стратегиями пользуются люди, чтобы заставить актеров осознавать друг друга? Я слишком осторожен в поиске актеров по пути?

4b9b3361

Ответ 1

По моему скромному мнению у вас есть три стратегии, которые я перечисляю с более близкой к вашей проблеме (но также и мне худший образец, извините)

Стратегия 1: вы создаете актера A и актера B, передавая actorRef A конструктору актера B. Ваш пинг-понг начнется с актера B, отправив сообщение актеру A, и актер A может просто ответить, используя ссылку отправителя, (или наоборот)


Стратегия 2: вы создаете слой в своем приложении, который заботится об именовании: он присваивает имя при создании актера, а также при запросе. Это централизует проблему в одной точке.


Стратегия 3: Вы удивляетесь, если два игрока-братья и сестры, играющие в пинг-понг, не заменят лучшую, более модульную иерархию актеров, где в основном каждый актер общается только со своим родителем и его детьми и не знает о своих братьях и сестрах.