【发布时间】:2014-07-02 06:48:48
【问题描述】:
我正在使用 Akka 的远程处理和序列化工具,并想了解一些事情以开始使用。我在这里阅读了关于序列化的文档:
http://doc.akka.io/docs/akka/2.3.4/scala/serialization.html
根据文档,似乎只在我的 application.conf 中提供这些东西就足够了,在:
akka.actor {
serializers {
java = "akka.serialization.JavaSerializer"
proto = "akka.remote.serialization.ProtobufSerializer"
}
serialization-bindings {
"com.mycompany.messages.MyMessage" = proto
}
}
假设我在该包下有一个案例类,例如:
package com.mycompany.messages;
case class MyMessage(name: String, year: Int)
然后在我的演员中,我可以简单地做这样的事情:
class ClientActor extends Actor {
def receive = {
case x: MyMessage => ...
}
}
这样的配置就足够了吗,还是我需要做更多的事情? 我查看了此处文档中提到的外部序列化程序: https://github.com/romix/akka-protostuff-serialization
这看起来很有希望,但我一直在寻找 Akka 开箱即用的标准。
我还在研究消息版本兼容性的测试。假设 演员 A 使用 MessageX
与 演员 B 交谈MessageX 最初可能包含如下字段:
a: String, b: String, c: String
现在假设演员 B 升级了它的 Message X 版本,我们称之为 Message X +1
Message X +1 现在包含另一个字段,如下所示:
a: String, b: String, c: String, d: String
但是演员 A 仍在发送旧版本的消息,只是简单地 Message X...演员 B 仍然知道如何反序列化旧消息?
感谢您的帮助。
【问题讨论】:
标签: scala akka protocol-buffers