Używam urządzeń do zdalnego i serializowania firmy Akka i chcę zrozumieć kilka rzeczy, aby zacząć. Czytałem nad dokumentacją na serializacji tutaj:Scala Akka i bufory protokołów
http://doc.akka.io/docs/akka/2.3.4/scala/serialization.html
Zgodnie z dokumentacją, wydaje się, że byłoby to wystarczy po prostu dostarczyć te rzeczy w moim application.conf pod:
akka.actor {
serializers {
java = "akka.serialization.JavaSerializer"
proto = "akka.remote.serialization.ProtobufSerializer"
}
serialization-bindings {
"com.mycompany.messages.MyMessage" = proto
}
}
I załóżmy, że mam klasy sprawy w ramach tego pakietu, takie jak:
package com.mycompany.messages;
case class MyMessage(name: String, year: Int)
a potem w moich aktorów, mogę zrobić coś simly l to:
class ClientActor extends Actor {
def receive = {
case x: MyMessage => ...
}
}
Czy taka konfiguracja byłaby wystarczająca, czy też musiałbym zrobić coś więcej? Szukałem na serializatora zewnętrznego wymienionego w dokumentacji tutaj: https://github.com/romix/akka-protostuff-serialization
To wygląda naprawdę obiecująco, ale szukałem czegoś standardzie, które wychodzi z pudełka od Akka.
Zajmuję się także testowaniem kompatybilności wersji wiadomości. Powiedzmy Aktor rozmowy do Aktor B z MessageX
MessageX początkowo może zawierać pola, na przykład w ten sposób:
a: String, b: String, c: String
Teraz powiedzmy Aktor B uaktualnia swoją wersję wiadomość X , pozwala to nazwać Wiadomość X +1
wiadomość X +1 zawiera teraz kolejne pole, tak jak poniżej:
a: String, b: String, c: String, d: String
Ale aktora wciąż wysłaniem starszą wersję wiadomości, po prostu wiadomość X ... Czy Aktor B nadal wiem, jak deserializować stare wiadomości?
Dzięki za pomoc.
Czy możesz podać więcej szczegółów: 'jak zrobić MyMessage wiadomość protobuf'? Lub dowolny przydatny link? –
https://developers.google.com/protocol-buffers/docs/overview?hl=en –