2016-07-03 3 views
3

Я прочитал AKKA сериализации page, где они говорят о том, как serialization-bindingsКак изменить стандартный Serializer для приложения Akka?

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 
} 

ответ

2

То, как я делаю это, чтобы сделать все мои сериализуемые классы продлить SerializableTrait, а затем в моих привязок я просто указать свой признак для сериализации с помощью пользовательского сериалайзер.

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

Это путь, я использую Kryo:

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

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

Похожие на Kunal все мои сообщения, которые я отправляю через провода/магазин/сериализации любым способом продлить этот Msg класс. Дело не только в том, что я не уверен, что есть способ установить сериализатор по умолчанию, но и сделать его явным для меня, что сериализовано в моем приложении.

И теперь, чтобы дать вашему актуальный вопрос попробовать:

Я также должен был установить "java.io.Serializable" = none в противном случае я получил предупреждение, что он не был уверен, что сериализатору выбрать для моих классов.

Таким образом, это может означать, что тематические классы по умолчанию распространяются Сериализуемыми и сделать что-то вроде этой работы в качестве настройки по умолчанию:

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

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

Но это только догадка, и на данный момент у меня нет возможности контрольная работа.

Смежные вопросы