Mi sto cazzando con i servizi remoti e di serializzazione di Akka e voglio capire alcune cose per iniziare. Ho letto sopra la documentazione sul serializzazione qui:Scala Akka e buffer di protocollo
http://doc.akka.io/docs/akka/2.3.4/scala/serialization.html
Secondo la documentazione, sembra che basterebbe solo la fornitura di queste cose nella mia application.conf, sotto:
akka.actor {
serializers {
java = "akka.serialization.JavaSerializer"
proto = "akka.remote.serialization.ProtobufSerializer"
}
serialization-bindings {
"com.mycompany.messages.MyMessage" = proto
}
}
E supponiamo ho una classe caso in quel pacchetto, come ad esempio:
package com.mycompany.messages;
case class MyMessage(name: String, year: Int)
E poi nei miei attori, posso fare qualcosa simly l ike this:
class ClientActor extends Actor {
def receive = {
case x: MyMessage => ...
}
}
Questa configurazione sarebbe sufficiente o dovrei fare qualcosa di più? Ho guardato un serializzatore esterna citato dalla documentazione qui: https://github.com/romix/akka-protostuff-serialization
Questo sembra davvero promettente, ma ero alla ricerca di qualcosa di standard che viene fuori dalla scatola da Akka.
Sto anche esaminando la compatibilità della versione del messaggio. Diciamo Attore Un trattative per Attore B con MessageX
MessageX inizialmente potrebbe contenere campi come questo:
a: String, b: String, c: String
Ora diciamo Attore B aggiorna la sua versione di messaggio X , chiamiamolo Messaggio X +1
messaggio X +1 comprende ora un altro campo, in questo modo:
a: String, b: String, c: String, d: String
Ma Attore Un sta ancora inviando la versione precedente del messaggio, semplicemente messaggio X ... sarebbe Attore B sa ancora come deserializzare il vecchio messaggio?
Grazie per l'aiuto.
Puoi fornire maggiori dettagli: 'come rendere MyMessage un messaggio protobuf'? O qualche link utile? –
https://developers.google.com/protocol-buffers/docs/overview?hl=it –