2015-02-24 4 views
4

Я пытаюсь немного узнать об акковых актерах (в scala), и я придумал этот вопрос, на который я не мог найти ответа.Обязательно ли иметь мастер-актер в Акке?

Вам обязательно нужно создать мастер-актера, а оттуда создать рабочих с помощью рабочего роутера? Или вы можете просто пропустить этот шаг и перейти непосредственно для создания рабочих с рабочим роутером от вашего основного объекта?

Дайте мне знать, если вам нужен какой-либо код, но я в основном следую за HelloWorld для akka.

ответ

9

Строго говоря: да. С точки зрения бизнес-логики: нет.

Актеры Акки, по дизайну, hierarchical. Это означает, что любые создаваемые вами актеры всегда будут иметь «родительский»/«хозяин», если не один определил себя, а затем /user guardian actor.

Однако обратите внимание, что эта иерархическая взаимосвязь, с точки зрения системы Akka, касается жизненного цикла актера и детского надзора. Не волнует, как вы подключаете актеров к своим сообщениям и/или любой пользовательской обработке жизненного цикла.

Таким образом, с точки зрения вашего приложения вы можете заставить своих работников действовать как сверстников с какой-то консенсусной схемой. Разумеется, у них будет системный родитель (/user, если вы сами не определяете его), но до тех пор, пока вы не заботитесь о наблюдении, и если вы только начинаете изучать Акку, вы можете не работать - все будет нормально работать.

Наконец, обратите внимание, что может быть много схем для работы в настройке «рабочий пул». Например, this article on work pulling может дать вам некоторое вдохновение в отношении возможных решений таких проблем.

Смежные вопросы