I thought I'd experiment with using akka-kryo serializer to see what 
difference it made to performance of persisting an event (defined by a 
simple case class) compared to just allowing the default java serialization

after trying to follow the instructions in here 
https://github.com/romix/akka-kryo-serialization I am stuck.

it appears to serialize the class I wanted (as I can see it in the 
database), but on recovery of the actor I just get

"RecoveryFailure was caused by: com.esotericsoftware.kryo.KryoException: 
Encountered unregistered class ID: 1636190130 
(akka.actor.ActorKilledException)"

have I just got a setting wrong, or am I doing it all wrong! :)

thank you!

Rich


here are the relevant sections of the application.conf..


akka {
extensions = 
["com.romix.akka.serialization.kryo.KryoSerializationExtension$"]

actor {
serializers {  
kryo = "com.romix.akka.serialization.kryo.KryoSerializer"  
}   
 serialization-bindings {
"com.example.State$DomainEvent" = kryo
}
}
}

kryo  {  
    # Possibles values for type are: graph or nograph  
    # graph supports serialization of object graphs with shared nodes  
    # and cyclic references, but this comes at the expense of a small 
overhead  
    # nograph does not support object grpahs with shared nodes, but is 
usually faster   
    type = "nograph"  


    # Possible values for idstrategy are:  
    # default, explicit, incremental  
    #  
    # default - slowest and produces bigger serialized representation. 
Contains fully-  
    # qualified class names (FQCNs) for each class. Note that selecting 
this strategy 
    # does not work in version 0.3.2, but is available on master and from 
0.3.3 onward.
    #  
    # explicit - fast and produces compact serialized representation. 
Requires that all  
    # classes that will be serialized are pre-registered using the 
"mappings" and "classes"
    # sections. To guarantee that both sender and receiver use the same 
numeric ids for the same  
    # classes it is advised to provide exactly the same entries in the 
"mappings" section   
    #  
    # incremental - fast and produces compact serialized representation. 
Support optional  
    # pre-registering of classes using the "mappings" and "classes" 
sections. If class is  
    # not pre-registered, it will be registered dynamically by picking a 
next available id  
    # To guarantee that both sender and receiver use the same numeric ids 
for the same   
    # classes it is advised to pre-register them using at least the 
"classes" section   

    idstrategy = "explicit"  

    # Define a default size for serializer pool
    # Try to define the size to be at least as big as the max possible 
number
    # of threads that may be used for serialization, i.e. max number
    # of threads allowed for the scheduler
    serializer-pool-size = 16

    # Define a default size for byte buffers used during serialization   
    buffer-size = 4096  

    # The serialization byte buffers are doubled as needed until they 
exceed max-buffer-size and an exception is thrown. Can be -1 for no maximum.
    max-buffer-size = -1

    # If set, akka uses manifests to put a class name
    # of the top-level object into each message
    use-manifests = false

    # Enable transparent compression of serialized messages
    # accepted values are: off | lz4 | deflate
    compression = off

    # Log implicitly registered classes. Useful, if you want to know all 
classes
    # which are serialized. You can then use this information in the 
mappings and/or 
    # classes sections
    implicit-registration-logging = false 

    # If enabled, Kryo logs a lot of information about serialization 
process.
    # Useful for debugging and lowl-level tweaking
    kryo-trace = true

    # If proviced, Kryo uses the class specified by a fully qualified class 
name
    # to perform a custom initialization of Kryo instances in addition to 
what
    # is done automatically based on the config file.
    #kryo-custom-serializer-init = "CustomKryoSerializerInitFQCN"

    # Define mappings from a fully qualified class name to a numeric id.  
    # Smaller ids lead to smaller sizes of serialized representations.  
    #  
    # This section is mandatory for idstartegy=explciit  
    # This section is optional  for idstartegy=incremental  
    # This section is ignored   for idstartegy=default  
    #   
    # The smallest possible id should start at 20 (or even higher), because
    # ids below it are used by Kryo internally e.g. for built-in Java and 
    # Scala types   
    mappings {  
        "com.example.State$DomainEvent" = 20
    }  

    # Define a set of fully qualified class names for   
    # classes to be used for serialization.
    # The ids for those classes will be assigned automatically,
    # but respecting the order of declaration in this section  
    #  
    # This section is optional  for idstartegy=incremental  
    # This section is ignored   for idstartegy=default  
    # This section is optional  for idstartegy=explicit  
    classes = [
"com.example.State$DomainEvent"
    ]
}

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to