[英]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.