问题描述
对于我的基于 dubbo 的系统,我使用此处描述的 API 配置:https://dubbo.apache.org/en/docs/v2.7/user/configuration/api/
现在,如果我想设置例如kryo@H_502_4@ 提供方的序列化,我可以在配置协议时轻松做到:
// Protocol
ProtocolConfig protocol = new ProtocolConfig();
protocol.setName("dubbo");
protocol.setPort(12345);
protocol.setSerialization("kryo"); // here
protocol.setThreads(200);
@H_502_4@
现在我的问题是:我怎样才能在消费者方面做同样的事情?
ReferenceConfig@H_502_4@ 只提供了一个
.setProtocol(String)@H_502_4@ 方法,并且无法以与
ProtocolConfig@H_502_4@ 相同的方式设置
ServiceConfig@H_502_4@,其中
.setProtocol(ProtocolConfig)@H_502_4@方法
谢谢
解决方法
ReferenceConfig
提供 setParameters
。使用 serialization
键设置协议。对于克里奥:
ReferenceConfig referenceConfig = ...;
HashMap<String,String> parameter = new HashMap<>();
parameter.put("serialization","kryo");
referenceConfig.setParameters(parameter);
有必要为直接连接设置消费者序列化类型(即如果没有注册服务器正在使用)。如果使用注册表,序列化类型会自动协商。