msgpack序列化
在Dubbo中使用msgpack序列化
MessagePack是一种高效的二进制序列化格式。它允许您在多种语言(如JSON)之间交换数据。但它更快更小。短整型被编码成一个字节,而典型的短字符串除了字符串本身只需要一个额外的字节。
提示
支持版本:2.7.12
之后
msgpack使用示例
-
- provider与consumer引入msgpack依赖
<dependency>
<groupId>org.msgpack</groupId>
<artifactId>msgpack-core</artifactId>
<version>0.8.22</version>
</dependency>
<dependency>
<groupId>org.msgpack</groupId>
<artifactId>jackson-dataformat-msgpack</artifactId>
<version>0.8.22</version>
</dependency>
-
- provider示例demo
dubbo 配置类增加如下协议配置:
...
@Bean
public ProtocolConfig msgpackProtocol(){
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setName("dubbo");
protocolConfig.setId("msgpack");
protocolConfig.setSerialization("msgpack");
return protocolConfig;
}
dubbo provider:
dubbo provider 接口实现的@Service注解添加:protocol = {“msgpackProtocol”}协议声明。
dubbo provider 接口:
public interface MsgpackService {
int tint(int i);
long tlong(long i);
List<String> tlist(List<String> l);
String multiParams(String str, int i, MyParam myParam);
}
dubbo provider 接口实现:
@Service(interfaceClass = MsgpackService.class,protocol = {"msgpackProtocol"})
public class MsgpackServiceImpl implements MsgpackService {
@Override
public int tint(int i) {
return i;
}
@Override
public long tlong(long i) {
return i;
}
@Override
public List<String> tlist(List<String> l) {
return l;
}
@Override
public String multiParams(String str, int i, MyParam myParam) {
return str + i + myParam.getName() + myParam.getAge();
}
}
用到的实体类:
@Data
public class MyParam {
private String name;
private int age;
public MyParam(String name, int age) {
this.name = name;
this.age = age;
}
// 需要提供无参构造函数
public MyParam(){}
}
-
- consumer 示例demo
@DubboReference(interfaceClass = MsgpackService.class)
private MsgpackService msgPackService;
@GetMapping("/msgpack")
public String testMsgpack(){
int v1 = msgPackService.tint(1);
long v2 = msgPackService.tlong(2);
List<String> v3 = msgPackService.tlist(Lists.newArrayList("1","2","3"));
String v4 = msgPackService.multiParams("hello", 3, new MyParam("Tom", 24));
return "msgpack"+v1+" "+v2+" "+v3+" "+v4;
}
-
- 调用执行
> curl http://localhost:8081/msgpack
> msgpack1 2 [1, 2, 3] hello3Tom24
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 July 23, 2021: update metadata doc, add application level metadata info. (#876) (e71a2ba)