MessagePack Java 0.6.X 使用一个消息打包(message-packable)类
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,使用注解 @Message 来让你可以序列化你自己类中对象的 public 字段。本代码可以在 https://github.com/cwiki-us-demo/messagepack-6-demo-
千家信息网最后更新 2025年12月03日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安全错误
数据库的锁怎样保障安全
z32hub芯片软件开发
网络安全大会演讲视频
常用国内全文数据库有哪些
书店网络安全案例
腾讯云服务器远程登录账号在哪看
四川内江网络服务器云主机
深圳软件开发武汉
银行网络安全风险
计算机网络技术专业劳动调查报告
服务器的化石玩法
学校网络安全责任书模板
邯郸嵌入式软件开发价格
网络技术和多媒体哪个好
学习网络安全是什么义务
博瑞互联网科技
服务器php环境
四川绵阳网络安全培训学校
虚拟商品上传数据库
无线网络技术导论第二版
吉它弹唱软件开发
大学软件开发老师培训
获取很多页面的数据库
天宫云数据库
dl388服务器支持的cpu
游戏小软件开发
什么是数据库类型有哪些
帅泓巍网络技术
衡水恒科软件开发有限公司
上海通用软件开发进货价
网络安全总体态势分析