MessagePack Java 0.6.X 使用一个消息打包(message-packable)类
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,使用注解 @Message 来让你可以序列化你自己类中对象的 public 字段。本代码可以在 https://github.com/cwiki-us-demo/messagepack-6-demo-
千家信息网最后更新 2025年01月31日MessagePack Java 0.6.X 使用一个消息打包(message-packable)类
使用注解 @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
对象
代码
多个
序列
字段
实际
实际上
注解
这是
顺序
测试
编译
消息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
聊城有实力的联想服务器代理
广西网络技术专业情况
动物园管理员游戏服务器维护
工信部5g网络安全管理
用什么软件开发c
一个系统连接多个数据库
关于网络安全主题教育的通知
山东省济南浪潮存储服务器电话
临沂软件开发便宜
深圳市前海微密网络技术
财政网络安全取得的成效
中国知网数据库线上讲座
福田区数据库管理中心标准体系
网络安全手抄报视频
国产服务器行业研究
焦作天气预报软件开发
软件开发资料在哪里
优化数据库查询速度
云盘里的文件是存在数据库的吗
军营网络安全宣传教育视频
实名认证无法连接服务器
北京软件开发的收入
郭继承讲网络安全
河南服务器机房定制价格
能附加不停版本的数据库吗
中国银行数据库激活状态
电大数据库应用技术试题
wow 新服务器
安徽厅服网络技术有限公司
城阳区平台软件开发