2015-04-21 3 views
3

Вот ситуация, с которой мне приходится иметь дело - Я использую websockets с игровым фреймворком, и каждое соединение с веб-разъемом имеет свой собственный Actor, как описано here. Теперь, как только будет установлено соединение с websocket, мне нужно запустить еще один Actor, который подписывается на канал Redis и при получении любого опубликованного сообщения на канал передает это сообщение его родительскому элементу, то есть Websocket Actor. Поэтому мне нужно запустить Redis Subscriber Actor после того, как начался Websocket Actor. Но у актеров нет метода postStart. Я попытался создать Redis Subscriber Actor в методе preStartWebsocket Actor, и он отлично работает, но я не понимаю, почему Actors не имеет метода postStart. Разве это не общий сценарий, когда актеры создают детей-актеров. Или это неправильный подход?Почему у актеров акк нет метода postStart?

+3

Не уверен, почему 'preStart' недостаточно для ваших нужд, это одно из лучших мест для создания детского актера (другое - тело конструктора). Дело в 'preStart' заключается в том, что это действительно означает предварительную обработку сообщений. Сам актер запущен, но еще не получает сообщения из почтового ящика. Это хорошее место, чтобы убедиться, что любые другие зависимости созданы до того, как вы начнете обрабатывать сообщения. Если вы сделали это после того, как актер начал обрабатывать сообщения, вы можете попасть в состояние гонки, где зависимость (дочерняя) еще не создана. – cmbaxter

+0

@cmbaxter Я думаю, что это может быть и ответ. –

ответ

9

Как указано в моем комментарии, я не уверен, почему preStart недостаточно для ваших нужд, это одно из лучших мест для создания дочернего актера (другое - тело конструктора). Дело о preStart в том, что это действительно означает обработку сообщений. Сам актер запущен, но еще не получает сообщения из почтового ящика. Это хорошее место, чтобы убедиться, что любые другие зависимости созданы до того, как вы начнете обрабатывать сообщения. Если вы сделали это после того, как актер начал обработку сообщений вы можете ударить состояние гонки, где зависимость (ребенок) не создала еще

Вы должны рассмотреть актер жизненный цикл диаграммы here для большей ясности

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