前言
dubbo作为目前比较流行的rpc框架,目前发展比较快,本文介绍下dubbo配置序列化相关的一些方式
dubbo version:3.0.4
配置
全局配置
首先可以配置全局的序列化方式,在application中配置,在传输协议protocol中配置对应的序列化方式,表示采用这种协议的接口统一使用这种序列化方式
protocol支持的一些协议可以看下Protocol SPI接口支持的值,如
设置默认的协议
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
dubbo.protocol.serialization=hessian2
接口级别配置
如果你采用的是xml形式来配置dubbo的接口,比如以下,那么就可以直接使用这种方式配置接口级别的序列化方式
<dubbo:service serialization="protobuf" interface="org.apache.dubbo.demo.DemoService"
ref="demoServiceImpl"/>
如果你采用的是注解的方式配置接口,比如以下
@DubboReference(
protocol = "dubbo",
loadbalance = "random")
private SayHelloService sayHelloService;
点开@DubboReference你会发现它并没有serialization参数,你会觉得@DubboReference和dubbo:service只是配置形式的不一样,为什么注解就不支持了呢
官方的答复是他们的设计,注解支持最小化设计原则,不准备提供serialization参数
官方是推荐这样配置的,在application.properties中配置
dubbo.service.{your-full-package-service-name}.serialization=xxx
比如
dubbo.service.com.example.api.SayHelloService.serialization=hessian2
我测试了一下,确实是可以的
总结
一个项目一般采用protocol来配置全局的序列化方式即可,但是比如别人提供给你一个接口调用,但是他只提供了protobuf的序列化方式,那么你就需要通过设置接口级别的序列化方式来调用这个接口,接口级别的设置优先级高于全局的
|