gpt4 book ai didi

Scala Akka 和 Protocol Buffer

转载 作者:行者123 更新时间:2023-12-04 14:44:44 25 4
gpt4 key购买 nike

我正在使用 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
}
}

假设我在该包下有一个 case 类,例如:
package com.mycompany.messages;
case class MyMessage(name: String, year: Int)

然后在我的 Actor 中,我可以简单地做这样的事情:
class ClientActor extends Actor {

def receive = {
case x: MyMessage => ...
}
}

这种配置是否足够,还是我需要做更多的事情?
我查看了此处文档中提到的外部序列化程序:
https://github.com/romix/akka-protostuff-serialization

这看起来很有希望,但我一直在寻找 Akka 开箱即用的标准。

我也在研究消息版本兼容性的测试。比方说 Actor A 交谈 Actor B 留言X

留言X 最初可能包含这样的字段:
a: String, b: String, c: String

现在假设Actor B升级了 的版本留言 X ,让我们称之为 留言 X +1

留言 X +1 现在包括另一个字段,如下所示:
a: String, b: String, c: String, d: String

但是 Actor A 仍在发送旧版本的消息,只是简单的 留言 X ... 会 Actor B 仍然知道如何反序列化旧消息吗?

谢谢您的帮助。

最佳答案

Protobuf 序列化器只能序列化 Protobuf 消息。因此,为了让事情如您所愿,您需要使 MyMessage 成为 protobuf 消息。

关于Scala Akka 和 Protocol Buffer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24524570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com