我正在使用Scala编写一个分布式应用程序,其中使用了Akka actors。我拥有一些数据结构,我的远程actors可以轻松地将其序列化、通过网络发送并反序列化,不需要我的额外帮助。
为了记录日志,我想序列化一个包含这些对象的case class。我阅读了akka项目网站上的序列化文档,但我想知道是否有更简单的方法来完成这项任务,因为Akka已经知道如何序列化这些对象。
编辑 2011年11月5日 回应Viktor的评论 该应用是一个分布式马尔可夫决策过程引擎。
我试图序列化其中一个东西:
为了记录日志,我想序列化一个包含这些对象的case class。我阅读了akka项目网站上的序列化文档,但我想知道是否有更简单的方法来完成这项任务,因为Akka已经知道如何序列化这些对象。
编辑 2011年11月5日 回应Viktor的评论 该应用是一个分布式马尔可夫决策过程引擎。
我试图序列化其中一个东西:
case class POMDPIteration(
observations: Set[(AgentRef, State)],
rewards: Set[(AgentRef, Float)],
actions: Set[(AgentRef, Action)],
state: State
)
以下是“AgentRef”的定义:
case class AgentRef(
clientManagerID: Int,
agentNumber: Int,
agentType: AgentType
)
Action
和AgentType
只是Symbol
的类型别名。
为了简洁起见,这里给出了State的定义: https://github.com/ConnorDoyle/EnMAS/blob/master/src/main/scala/org/enmas/pomdp/State.scala
我成功地将对象类型为State的case类在远程actor之间发送,没有遇到任何问题。我只想知道有没有一种方法可以获取Akka用于我的目的的序列化程序。
当执行消息传递时,Akka的隐式序列化很容易,但从文档中可以看出,显式要求Akka提供序列化版本似乎比较困难。也许我误解了文档,或者漏掉了重要的内容。