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/