Akka стали () и getSender () несовместимы

У меня вопрос, связанный с Akka 2.0.1 в Java API. У меня такая ситуация:

Актер A: получает запрос от пользовательского интерфейса. Затем он сделает следующее.

  1. Дождитесь сообщения от пользовательского интерфейса
  2. Отправить сообщение Актеру B, чтобы получить данные
  3. Станьте актером, который обрабатывает ответ от актера B, когда он был получен.

Актер Б:

  1. Ждите сообщения от актера А.
  2. Извлекает данные
  3. Звонки getSender().tell(xxx);

Это не сработает, и Актер А не получит ответа. Если, однако, Актер Б использует глобальную ссылку на актера А в системе, то в моем случае zzz.eventCaller.tell(xxx) он, тем не менее, будет работать.

Я пропустил некоторые базовые вещи, или это ожидаемое поведение или ошибка?


person StefanE    schedule 11.05.2012    source источник
comment
Я так плохо угадываю, как выглядит код людей ...   -  person Viktor Klang    schedule 11.05.2012
comment
Я добавлю пример, если у меня снова возникнут проблемы с пониманием Akka.   -  person StefanE    schedule 15.05.2012


Ответы (1)


Поскольку вы не предоставили фактический код, вы как бы оставили меня гадать, в чем может быть ваша проблема. API Akka Java не может отслеживать отправителей, если вы не предоставите им:

recipient.tell(message, getSelf());

Я надеюсь, что это поможет.

person Viktor Klang    schedule 12.05.2012
comment
Вы прямо на месте. В качестве дополнения я хотел бы упомянуть, что я бы предпочел Scala, но сейчас это не вариант в моей работе :) - person StefanE; 15.05.2012