5
votes

I am writing a distributed application in Scala that uses Akka actors. I have some data structures that my remote actors happily serialize, send over the wire, and unserialize without any extra help from me.

For logging I would like to serialize a case class containing these objects. I read the serialization docs on the akka project site but am wondering if there an easier way to get this done since Akka apparently knows how to serialize these objects already.


Edit 5 Nov 2011 in response to Viktor's comment

The application is a distributed Markov Decision Process engine.

I am trying to serialize one of these things:

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

here is the definition of AgentRef:

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

Action and AgentType are just type aliases of Symbol

To keep this shorter, the definition of State is here: https://github.com/ConnorDoyle/EnMAS/blob/master/src/main/scala/org/enmas/pomdp/State.scala

I am successfully sending case classes containing object of type State among remote actors with no problem. I am just wondering if there is a way to get at the serialization routines that Akka uses for my own purposes.

Akka's implicit serialization when doing message passing is easy, but it appears from the docs that asking Akka for a serialized version explicitly is hard. Perhaps I have misunderstood the documentation, or am missing something important.

1
Do you have some example code to illustrate the problem?Viktor Klang
@ViktorKlang - I added some code and expanded the question a little bit. Thanks for looking!Connor Doyle

1 Answers