2013-03-19 2 views
1

Je souhaite ajouter des cas spéciaux pour améliorer les performances de tout module de sérialisation Akka, c'est-à-dire permettant une sérialisation plus rapide de Array[Double] ou tout type de primitive enveloppé par l'utilisateur. Existe-t-il un moyen canonique d'autoriser la sérialisation personnalisée par type? Mon idée est d'ajouter un trait CanSerialize[T] qui définit les méthodes serialize(o:T):Array[Byte] et deserialize(bytes:Array[Byte]):T. Existe-t-il un moyen de réaliser quelque chose comme ça sans perdre les avantages de l'appariement de motifs Akka?Injecter des cas spéciaux au module de sérialisation Akka

modifier Je pourrais aussi se contenter de Kryo ou autre chose plus vite que le sérialiseur de Java, mais il ne semble pas y avoir de fichiers jar pour préemballées Kryo et 2.1 Akka.

Répondre

2

Vous pouvez enregistrer votre propre sérialiseur pour des types spécifiques.

akka.actor { 
    serialization-bindings { 
    "[D" = doubleBytes 
    } 

    serializers { 
    doubleBytes = "a.b.YourDoubleArraySerializer" 
    } 
} 

Notez que [D est le nom de la classe pour Array[Double].

http://doc.akka.io/docs/akka/2.1.2/scala/serialization.html

+0

Pouvez-vous élaborer sur "[D"? Je ne vois pas comment c'est Array [Double]? – Felix

+0

scala> Array [Double] (2) .getClass.getName res1: String = [D –

+0

Yuck, mais merci: D – Felix

Questions connexes