Advertisement
Guest User

Kryo Message Converter for RabbitMQ

a guest
Mar 22nd, 2013
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.35 KB | None | 0 0
  1. import java.io.ByteArrayInputStream;
  2. import java.io.ByteArrayOutputStream;
  3. import java.util.ArrayList;
  4.  
  5. import org.objenesis.strategy.StdInstantiatorStrategy;
  6. import org.springframework.amqp.core.Message;
  7. import org.springframework.amqp.core.MessageProperties;
  8. import org.springframework.amqp.support.converter.MessageConversionException;
  9. import org.springframework.amqp.support.converter.MessageConverter;
  10.  
  11. import com.esotericsoftware.kryo.Kryo;
  12. import com.esotericsoftware.kryo.io.Input;
  13. import com.esotericsoftware.kryo.io.Output;
  14.  
  15. public class KryoMessageConverter implements MessageConverter {
  16.  
  17.     private final static Kryo kryo = new Kryo();
  18.     static {
  19.         kryo.setInstantiatorStrategy(new StdInstantiatorStrategy());
  20.         kryo.setRegistrationRequired(false);
  21.     }
  22.    
  23.     @Override
  24.     public Message toMessage(Object object, MessageProperties messageProperties) throws MessageConversionException {
  25.         ByteArrayOutputStream baos = new ByteArrayOutputStream();
  26.         Output out = new Output(baos);
  27.         kryo.writeObject(out, object);
  28.         out.close();
  29.         return new Message(baos.toByteArray(), messageProperties);
  30.     }
  31.  
  32.     @Override
  33.     public Object fromMessage(Message message) throws MessageConversionException {
  34.         byte[] bytes = message.getBody();
  35.        
  36.         Input input = new Input(new ByteArrayInputStream(bytes));
  37.        
  38.         return kryo.readObject(input, ArrayList.class);
  39.     }
  40.  
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement