我在玩akka远程处理,并创建了一个小的Scala应用程序,该应用程序将消息发送到其他Scala应用程序。很好,接收方应用程序设法接收到消息,但是我收到了奇怪的序列化警告(如下所示)。我尝试按照akka.io remoting的文档配置序列化,但是没有找到摆脱这些警告的设置。
虽然我做错了事并克隆了akka/akka github存储库,但我sbt运行akka-samples/akka-sample-remote-scala。我惊讶他们有同样的错误。
任何人都可以为我指出正确的方向吗?谢谢。
最佳答案
好吧,这不是错误,只是警告。 Akka使用Java序列化处理用户消息,因此人们无需定义任何映射等即可快速入门。
但是您不想在生产中使用它,因为它非常慢。因此,如果您只是在玩耍,则可以忽略该警告(甚至可以按照消息中的说明在配置中将其禁用)。对于严肃的业务,请使用JSON,Avro,Kryo,Protobuf ...
在配置中定义自己的序列化器
akka {
actor {
serializers {
java = "akka.serialization.JavaSerializer"
proto = "akka.remote.serialization.ProtobufSerializer"
myown = "docs.serialization.MyOwnSerializer"
}
serialization-bindings {
"java.lang.String" = java
"docs.serialization.Customer" = java
"com.google.protobuf.Message" = proto
"docs.serialization.MyOwnSerializable" = myown
"java.lang.Boolean" = myown
}
}
}
这是从
http://doc.akka.io/docs/akka/2.4.2/scala/serialization.html#serialization-scala
真棒"Zen of Akka"演示文稿的第7章也介绍了该主题。