Je développe une bibliothèque réactive qui est implémentée en interne en utilisant des acteurs Akka. Appelons cette bibliothèque server
. La bibliothèque expose un seul type d'acteur en tant qu'API. Cet acteur accepte différents types de messages, qui définissent son interface publique. Disons que ces messages sont définis comme suit.Partager le type de messages entre deux projets dans Akka
sealed trait Request
case class Creation(name: String) extends Request
sealed trait Response
case class CreationAck(name: String) extends Response
Maintenant, je dois également implémenter un programme qui utilise la bibliothèque ci-dessus. Appelons ce programme client
. Ce programme utilisera également Akka Actors pour s'intégrer à la bibliothèque, par exemple en utilisant le modèle ask (le reste de l'application n'est pas développé en utilisant des acteurs).
implicit val timeout = Timeout(5 seconds)
def create(): Future[CreationAck] = (mainActor ? Creation).mapTo[CreationAck]
// And so on...
Il est clair que, pour laisser la compilation du code ci-dessus, les types Creation
et CreationAck
doivent être disponibles à la fois pour server
et client
.
Ma question est: Quelle est la meilleure approche pour partager les messages publics comme Creation
et CreationAck
parmi les deux projets? Pour construire chaque programme que j'utilise sbt.
Ok, pouvez-vous me donner un exemple de comment configurer sbt et la structure du projet pour réaliser ce que vous avez dit? –