MessagePack Java 0.6。X使用一个消息打包(message-packable)类

  

使用注解<代码> @Message>

本代码可以在https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Object.java中下载到本地后进行编译测试。

包com.insight.demo.msgpack;      进口org.junit.Test;   进口org.msgpack.MessagePack;   进口org.msgpack.annotation.Message;   进口org.slf4j.Logger;   进口org.slf4j.LoggerFactory;      进口java.util.UUID;      进口静态org.junit.Assert.assertEquals;/* *   * MessagePack6Objects   *   * @author yhu   */公开课MessagePack6Object {   最后的日志记录器=LoggerFactory.getLogger (MessagePack6Object.class);/* *   * MessageData消息对象   */@Message//注释   公共静态类MessageData {//公共字段序列化。   公共字符串uuid;   公共字符串名称;   公共双版本;   }/* *   *测试MessagePack6Objects   */@Test   公共空间testMessagePack6Objects () {   logger.debug (“MessagePack6Objects对象”);      .toString字符串uuid=UUID.randomUUID () ();//初始化OBJ   MessageData src=https://www.yisu.com/zixun/new MessageData ();   src。uuid=uuid;   src.name=" MessagePack6”;   src。version=0.6;      尝试{   MessagePack msgPack=new MessagePack ();//序列化   序列化logger.debug (“- - - - - - - - - - - -”);   byte[]字节=msgPack.write (src);   logger.debug(“字节数组长度:[{}]”,bytes.length);//反序列化   logger.debug(反序列化”- - - - - - - - - - - -”);   MessageData dst=msgPack。读(字节,MessageData.class);   logger.debug(“检查对象UUID: [{}]”, dst.uuid);      assertequal (uuid、dst.uuid);      }捕捉(例外的前女友){   记录器。错误(“MessagePack序列化和反序列化错误”前);   }   }   }

如果你希望按照顺序序列化多个对象的话,你可以使用帕克<代码> 和<代码>解包器>

这是因为<代码> MessagePack.write(对象)和<代码>阅读(byte[]) 实际上每次都调用创建了帕克<代码> 和<代码>解包器>

为了使用帕克<代码> 和<代码>解包器> createPacker (OutputStream) 和<代码> createUnpacker (InputStream)

本代码可以https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Objects.java中查看。

包com.insight.demo.msgpack;      进口org.junit.Test;   进口org.msgpack.MessagePack;   进口org.msgpack.annotation.Message;   进口org.msgpack.packer.Packer;   进口org.msgpack.unpacker.Unpacker;   进口org.slf4j.Logger;   进口org.slf4j.LoggerFactory;      进口java.io.ByteArrayInputStream;   进口java.io.ByteArrayOutputStream;   进口java.util.UUID;      进口静态org.junit.Assert.assertEquals;/* *   * MessagePack6Objects   *   * @author yhu   */公开课MessagePack6Objects {   最后的日志记录器=LoggerFactory.getLogger (MessagePack6Objects.class);/* *   * MessageData消息对象   */@Message//注释   公共静态类MessageData {//公共字段序列化。   公共字符串uuid;   公共字符串名称;   公共双版本;   }/* *   *测试MessagePack6Objects   */@Test   公共空间testMessagePack6Objects () {   logger.debug (“MessagePack6Objects对象”);      .toString字符串uuid=UUID.randomUUID () ();//初始化OBJ   MessageData src1=new MessageData ();   src1。uuid=uuid;   src1.name=" MessagePack6-src1”;   src1。version=0.6;      MessageData src2=new MessageData ();   src2。uuid=uuid;   src2.name=" MessagePack6-src2”;   src2。version=10.6;      MessageData src3=new MessageData ();   src3。uuid=uuid;   src3.name=" MessagePack6-src3”;   src3。version=1.6;      尝试{   MessagePack msgPack=new MessagePack ();//序列化   序列化logger.debug (“- - - - - - - - - - - -”);   ByteArrayOutputStream=新ByteArrayOutputStream ();   封隔器封隔器=msgPack.createPacker(出);   packer.write (src1);   packer.write (src2);   packer.write (src3);      byte[]字节=out.toByteArray ();   logger.debug(“字节数组长度:[{}]”,bytes.length);//反序列化   logger.debug(反序列化”- - - - - - - - - - - -”);   ByteArrayInputStream=新ByteArrayInputStream(字节);   解包器解包器=msgPack.createUnpacker(的);      MessageData dst1=unpacker.read (MessageData.class);   MessageData dst2=unpacker.read (MessageData.class);   MessageData dst3=unpacker.read (MessageData.class);      logger.debug(“检查对象UUID: [{}]”, dst1.uuid);      assertequal (uuid、dst1.uuid);      }捕捉(例外的前女友){   记录器。错误(“MessagePack序列化和反序列化错误”前);   }   }   }

MessagePack Java 0.6。X使用一个消息打包(message-packable)类