繁体   English   中英

如何更改Akka应用程序的默认Serializer?

[英]How to change default Serializer for an Akka application?

我读了akka序列化页面 ,他们在那里谈论serialization-bindings

serialization-bindings {
      "java.lang.String" = java
      "docs.serialization.Customer" = java
      "com.google.protobuf.Message" = proto
      "docs.serialization.MyOwnSerializable" = myown
      "java.lang.Boolean" = myown
    }

我正在考虑使用kyro序列化,并想知道是否有一种方法可以打开kyro序列化默认为完整的应用程序? 而不是给每个类或包名?

就像是

serialization-bindings {
     default = kyro
}

这是方式,我使用kryo:

serializers {
  kryo = "com.romix.akka.serialization.kryo.KryoSerializer"
}

serialization-bindings {
  "com.ex.es.Msg" = kryo
  "java.io.Serializable" = none
}

与Kunal类似,我通过wire / store / serialize以任何方式发送的所有消息都扩展了Msg类。 这不仅仅是因为我不确定是否有办法设置默认的序列化程序,而且还要让我明确,我的应用程序中序列化了什么。

现在试试你的实际问题

我还必须设置"java.io.Serializable" = none否则我收到一个警告,它不确定,哪个序列化程序选择我的类。

所以这可能意味着,默认情况下,case类扩展Serializable并使这样的工作作为默认设置:

serializers {
  kryo = "com.romix.akka.serialization.kryo.KryoSerializer"
}

serialization-bindings {
  "java.io.Serializable" = kryo
}

但这只是一个有根据的猜测,目前我没有可能进行测试。

我这样做的方法是让我的所有可序列化类扩展SerializableTrait ,然后在我的绑定中,我只是指定我的特性使用自定义序列化器进行序列化。

akka.actor {
  serializers {
    json-serializer = "io.example.MySerializerClass"
 }
  serialization-bindings {
   "io.example.SerializableTrait" = json-serializer
 }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM