我在玩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章也介绍了该主题。

10-05 19:05
查看更多