Я новичок akka, и я пытаюсь создать приложение, состоящее из Spray и Akka. В рамках приложения я хотел бы дать моим коллегам-разработчикам (которые также являются новичками аккки) некоторыми заранее упакованными актерами, которые делают конкретные вещи, которые они могут затем «прикрепить» к своим актерским системам.Как создать «Locator» для Akka Actors
В частности:
Есть ли рекомендуемый способ обеспечить «актер локатор»/«Актер систему локатора» - думает, что служба поиск, как API для поиска и отправки сообщений актеров? Другими словами Как я могу реализовать такую функцию:
ActorLocator.GoogleLocationAPIActor
так, что я могу затем использовать его как: ActorLocator.GoogleLocationAPIActor ! "StreetAddress"
Предположим, что getGoogleLocationAPIActor возвращает ActorRef, который принимает строки, которые адреса и делает HTTP вызов google, чтобы разрешить это для lat/lon.
я мог внутренне использовать actorSelection, но:
- Я хотел бы предоставить GoogleLocationAPIActor как часть библиотеки, что мои коллеги-разработчики могут использовать
- # 1 означает, что, когда мой товарищ разработчик строит актер на основе приложения ему нужен способ рассказать библиотечный код, в котором находится актерская система, чтобы библиотека могла подключиться к нему актером (в соответствии с одной системой актера в приложении practice). Конечно, в распределенной среде это может быть опекуном для группы участников, которые работают удаленно.
В настоящее время я определяю ActorSystem в объекте, как и доступ к ней повсюду, как
object MyStage{
val system:ActorSystem = ActorSystem("my-stage")
}
затем
object ActorLocator{
val GoogleLocationAPIActor = MyStage.system.actorOf(Props[GoogleLocationAPI])
}
Такой подход, как представляется, похож на this, но я не очень уверен, если это хорошо. Мои проблемы заключаются в том, что система кажется слишком открытой для всех, кто добавляет детей без какой-либо надзорной иерархии, это кажется немного уродливым.
Является ли мой вопрос разумным или я думаю об этом неправильно?
Как мы можем «создать» библиотеку актеров, которую мы можем использовать в разных приложениях?
Извините за отложенный ответ, но да, это довольно элегантно! –