如何设置消费侧达博序列化?

问题描述

对于我的基于 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);

有必要为直接连接设置消费者序列化类型(即如果没有注册服务器正在使用)。如果使用注册表,序列化类型会自动协商。