В настоящее время я занимаюсь созданием довольно крупного Java-приложения на базе Akka, и я сталкиваюсь с несколькими проблемами, которые меня не пугают.
Моя текущая компоновка пакетов выглядит примерно так:
Мой Mobile
класс, служащий супервизором актеров внутри пакета actors
.
Так как я не хочу создавать новый набор Актеров для всех HttpClient
и Account
, я передаю их в объекты сообщений, которые хранятся в пакете сообщений, вместе с конечной точкой ActorRef
, которая получает окончательный результат. Однако это создает очень загроможденный пакет messages
с другим сообщением для каждого актера. Например. MobileForActor1
, Actor1ForMobile
, MobileForActor2
и т.д. Теперь мой вопрос: существует ли конвенция для такого рода вещей, которая касается этой проблемы и является моей структурой (Mobile
→ Actor1
→ Mobile
→ Actor2
→ и т.д.), каким образом Akka хочет, чтобы это было или у меня есть просто вид водопада сообщений (Mobile
→ Actor1
→ Actor2
→ и т.д.)?
Сейчас я отправляю ConnectMessage
в мой Mobile
актер, который затем отправляет его в Actor1
, Actor1
обрабатывает его и отправляет новое сообщение обратно в Mobile
, Mobile
отправляет этот ответ затем до Actor2
, и цикл продолжается с созданием нового сообщения на основе старого сообщения. Например. new Message2(message1.foo, message1.bar, message1.baz, newComputatedResult, newComputatedResult2, etc);
Является ли эта хорошая практика или я должен включать старый экземпляр (который может содержать информацию, которая больше не полезна) и включает в себя новый материал? Например. new Message2(message1, newComputatedResult, newComputatedResult2, etc);
Или я должен делать что-то совершенно другое?
Я думал об использовании TypedActors, но для этого требуется использование рисунка водопада, и я не знаю, как я передам ActorRef слушателя, который хочет получить окончательный результат.
Надеюсь, я сделал себя достаточно понятным, потому что английский не мой первый язык и что вопрос ясен для всех.
Я начинаю разработчик Akka и люблю эту идею, но так как документация не очень хорошо охватывает, я подумал, что это будет лучшее место, чтобы спросить. Спасибо за прочтение!