2011-11-04 19 views
5

Estoy escribiendo una aplicación distribuida en Scala que utiliza actores Akka. Tengo algunas estructuras de datos que mis actores remotos serializaron alegremente, enviaron por cable y se deserializaron sin ninguna ayuda adicional mía.Serialización en Scala/Akka

Para el registro me gustaría serializar una clase de caso que contiene estos objetos. Leí los documentos de serialización en el akka project site pero me pregunto si existe una manera más fácil de hacerlo ya que Akka aparentemente ya sabe cómo serializar estos objetos.


Editar 5 Nov 2011en respuesta al comentario de Viktor

La aplicación es un motor de proceso de decisión de Markov distribuida.

estoy tratando de serializar una de estas cosas:

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

aquí es la definición de AgentRef:

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

Action y AgentType están simplemente escriba alias de Symbol

Para mantener esto más corto, la definición de Estado está aquí: https://github.com/ConnorDoyle/EnMAS/blob/master/src/main/scala/org/enmas/pomdp/State.scala

Estoy enviando con éxito clases de casos que contienen el objeto de tipo Estado entre actores remotos sin ningún problema. Me pregunto si hay alguna manera de llegar a las rutinas de serialización que Akka usa para mis propios fines.

La serialización implícita de Akka al hacer el envío de mensajes es fácil, pero de los documentos parece que pedirle a Akka una versión serializada explícitamente es difícil. Quizás he entendido mal la documentación o me falta algo importante.

+0

¿Tiene un código de ejemplo para ilustrar el problema? –

+0

@ViktorKlang - Agregué un código y amplié la pregunta un poco. ¡Gracias por mirar! –

Respuesta