温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-06-30 10:14:52 来源:网络 阅读:250 作者:HoneyMoose 栏目:大数据

使用注解 @Message 来让你可以序列化你自己类中对象的 public 字段。

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

package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.annotation.Message; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.UUID; import static org.junit.Assert.assertEquals; /**  * MessagePack6Objects  *  * @author yhu  */ public class MessagePack6Object {     final Logger logger = LoggerFactory.getLogger(MessagePack6Object.class);     /**      * MessageData Message Object      */     @Message // Annotation     public static class MessageData {         // public fields are serialized.         public String uuid;         public String name;         public double version;     }     /**      * Test MessagePack6Objects      */     @Test     public void testMessagePack6Objects() {         logger.debug("MessagePack6Objects for Objects");         String uuid = UUID.randomUUID().toString();         // INIT OBJ         MessageData src = new MessageData();         src.uuid = uuid;         src.name = "MessagePack6";         src.version = 0.6;         try {             MessagePack msgPack = new MessagePack();             // Serialization             logger.debug("------ Serialization ------");             byte[] bytes = msgPack.write(src);             logger.debug("Bytes Array Length: [{}]", bytes.length);             // Deserialization             logger.debug("------ Deserialization ------");             MessageData dst = msgPack.read(bytes, MessageData.class);             logger.debug("Check Object for UUID: [{}]", dst.uuid);             assertEquals(uuid, dst.uuid);         } catch (Exception ex) {             logger.error("MessagePack Serialization And Deserialization error", ex);         }     } }

 

如果你希望按照顺序序列化多个对象的话,你可以使用  Packer 和  Unpacker 多个对象。

这是因为 MessagePack.write(Object) 和 read(byte[]) 实际上每次都调用创建了 Packer 和 Unpacker 对象。

为了使用 Packer 和  Unpacker 对象,请调用 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 中查看。

 

package com.insight.demo.msgpack; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.annotation.Message; import org.msgpack.packer.Packer; import org.msgpack.unpacker.Unpacker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.UUID; import static org.junit.Assert.assertEquals; /**  * MessagePack6Objects  *  * @author yhu  */ public class MessagePack6Objects {     final Logger logger = LoggerFactory.getLogger(MessagePack6Objects.class);     /**      * MessageData Message Objects      */     @Message // Annotation     public static class MessageData {         // public fields are serialized.         public String uuid;         public String name;         public double version;     }     /**      * Test MessagePack6Objects      */     @Test     public void testMessagePack6Objects() {         logger.debug("MessagePack6Objects for Objects");         String uuid = UUID.randomUUID().toString();         // INIT 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;         try {             MessagePack msgPack = new MessagePack();             // Serialization             logger.debug("------ Serialization ------");             ByteArrayOutputStream out = new ByteArrayOutputStream();             Packer packer = msgPack.createPacker(out);             packer.write(src1);             packer.write(src2);             packer.write(src3);             byte[] bytes = out.toByteArray();             logger.debug("Bytes Array Length: [{}]", bytes.length);             // Deserialization             logger.debug("------ Deserialization ------");             ByteArrayInputStream in = new ByteArrayInputStream(bytes);             Unpacker unpacker = msgPack.createUnpacker(in);             MessageData dst1 = unpacker.read(MessageData.class);             MessageData dst2 = unpacker.read(MessageData.class);             MessageData dst3 = unpacker.read(MessageData.class);             logger.debug("Check Object for UUID: [{}]", dst1.uuid);             assertEquals(uuid, dst1.uuid);         } catch (Exception ex) {             logger.error("MessagePack Serialization And Deserialization error", ex);         }     } }

 

 

https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI