2011-11-04 3 views
5

J'écris une application distribuée dans Scala qui utilise des acteurs Akka. J'ai des structures de données que mes acteurs à distance sérialisent volontiers, envoient par dessus le fil et se désérialisent sans aucune aide supplémentaire de ma part. Pour la journalisation, je voudrais sérialiser une classe de cas contenant ces objets. J'ai lu les documents de sérialisation sur le akka project site mais je me demande s'il y a un moyen plus facile de faire cela puisque Akka sait apparemment comment sérialiser ces objets déjà.Sérialisation dans Scala/Akka


Modifier le 5 novembre 2011en réponse au commentaire de Viktor

L'application est un moteur de décision de Markov distribué processus.

J'essaie de sérialiser une de ces choses:

case class POMDPIteration(
    observations: Set[(AgentRef, State)], 
    rewards: Set[(AgentRef, Float)], 
    actions: Set[(AgentRef, Action)], 
    state: State 
) 

ici est la définition de AgentRef:

case class AgentRef(
    clientManagerID: Int, 
    agentNumber: Int, 
    agentType: AgentType 
) 

Action et AgentType sont de type tout alias de Symbol

Pour garder plus courte, la définition de l'État est ici: https://github.com/ConnorDoyle/EnMAS/blob/master/src/main/scala/org/enmas/pomdp/State.scala

Je réussis à envoyer des classes de cas contenant l'objet de type State parmi les acteurs distants sans problème. Je me demande simplement s'il existe un moyen d'établir les routines de sérialisation qu'Akka utilise à mes propres fins.

La sérialisation implicite d'Akka lors du passage de message est facile, mais il apparaît des docs que demander explicitement à Akka pour une version sérialisée est difficile. Peut-être ai-je mal compris la documentation ou manqué quelque chose d'important.

+0

Avez-vous un code d'exemple pour illustrer le problème? –

+0

@ViktorKlang - J'ai ajouté du code et développé un peu la question. Merci d'avoir regardé! –

Répondre