有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`
在Dubbo中使用msgpack序列化
背景
MessagePack是一种高效的二进制序列化格式。它允许您在多种语言(如JSON)之间交换数据。但它更快更小。短整型被编码成一个字节,而典型的短字符串除了字符串本身只需要一个额外的字节。
示例
- 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
本文是原创文章,采用 CC BY-NC-SA 4.0 协议,完整转载请注明来自 小朱
评论
隐私政策
0/500
滚动到此处加载评论...


