MessagePack是一种高效的二进制序列化格式。它允许您在多种语言(如JSON)之间交换数据。但它更快更小。短整型被编码成一个字节,而典型的短字符串除了字符串本身只需要一个额外的字节。
2.7.12 之后        <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>
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(){}
}
    @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