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)。
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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Go语言小技巧
1 反射 val := reflect.ValueOf(v) kind := val.Kind() if kind == reflect.String { pValue := val.String() } else if kind == reflect.Int || kind == reflect.Int8 || kind == reflect.Int16 || kind == reflect.Int32 || kind == reflect.Int64 { pValueInt := val.Int() pValue := strconv.FormatInt(pValueInt, 10) } else if kind == reflect.Float32 || kind == reflect.Float64 { pValueFloat := val.Float() pValue := strconv.FormatFloat(pValueFloat, 'f', -1, 64) } else if kind == reflect.Slice { vSlice, ok := v.([]int...
- 下一篇
物联网平台服务端订阅Java SDK解读
1、使用服务端订阅功能,需在控制台上进行设置,选择要推送的消息类型。 2、在Maven工程项目中添加依赖,如下所示。 <dependencies> <!-- Aliyun core --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.3.5</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-iot</artifactId> <version>6.11.0</version> </dependency> <!-- iot message client --> <dep...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境