MessagePack是一种高效二进制序列化格式。可以在多种语言中进行快速数据交换,比如JSON格式等。这种格式小巧快速,多个小整数会压缩成一个字节,通常短字符串压缩后只比原来长度增加1个字节。MessagePack支持超过50种编程语言和环境(完整列表)。
MessagePack v7比之前的v06更加快速,支持所有的消息封装格式,包括扩展格式。
快速上手
Maven用户:
1
2
3
4
5
|
<dependency>
<groupId>org.msgpack</groupId>
<artifactId>msgpack-core</artifactId>
<version>0.8.2</version>
</dependency>
|
sbt用户:
1 |
libraryDependencies += "org.msgpack" % "msgpack-core" % "0.8.2"
|
gradle用户:
1
2
3
4
5
6
7
|
repositories {
mavenCentral()
}
dependencies {
compile 'org.msgpack:msgpack-core:0.8.2'
}
|
通过jackson-databind,msgpack-java支持Java对象的序列化与反序列化。详细信息可以参见msgpack-jackson/README.md。v06中基于模板的序列化机制已经不推荐使用。
MessagePack开发
msgpack-java使用sbt构建项目。sbt的基本用法可以参见:
编码风格
- msgpack-java使用与Facebook Presto相同的编码风格。
- IntelliJ配置文件
基本sbt命令
进入sbt命令行:
1 |
$ ./sbt
|
下面列出了日常开发可能用到的sbt命令列表:
1
2
3
4
5
6
7
8
9
10
|
> ~compile # 编译源代码
> ~test:compile # 编译源代码和测试代码
> ~test # 针对代码变更运行测试
> ~test-only *MessagePackTest # 为指定类运行测试
> ~test-only *MessagePackTest -- -n prim # 运行带有"prim"标记的测试
> project msgpack-core # 指定项目
> package # 为指定目录下的每个项目创建jar文件
> findbugs # 在target/findbugs下生成findbug报告
> jacoco:cover # 为target/jacoco目录生成代码覆盖率报告
> jcheckStyle # 执行check style
|
发布
1
2
3
4
|
> publishLocal # 在本地.ivy2仓库安装
> publishM2 # 在本地.m2 Maven仓库安装
> publishSigned # 将GPG签名组件发布到Sonatype仓库
> sonatypeRelease # 发布到Maven中央仓库(一般4小时内可以实现同步)
|
msgpack-java使用sbt-sonatype插件发布到Maven中央仓库。在全局sbt设置中设置Sonatype账户信息(用户名、密码)。注意,不要在项目中包含密码信息文件。
$HOME/.sbt/(sbt-version)/sonatype.sbt
1
2
3
4
|
credentials += Credentials("Sonatype Nexus Repository Manager",
"oss.sonatype.org",
"(Sonatype user name)",
"(Sonatype password)")
|
项目结构
1
2
|
msgpack-core # 包含packer/unpacker实现,不适用任何第三方库
msgpack-jackson # 包含jackson-dataformat-java实现
|
官方网站:http://msgpack.org/
开源地址:https://github.com/msgpack/msgpack-java
from: http://hao.jobbole.com/messagepack/