背景:公司需要使用的dubbo来传输文件。但是文件比较大,就不能使用dubbo框架的dubbo协议了。dubbo协议会有大小限制。一般来说是8M。
参考资料:https://blog.csdn.net/fuyuwei2015/article/details/72848310/
所有能够选择的协议只有:hessian协议和rmi协议。
我的配置是基于rmi协议的。
我司使用的是yml配置文件
具体配置如下:yml文件
package com.fg;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.ProviderConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.rpc.Exporter;
@Configuration
@ConditionalOnClass(Exporter.class)
public class DubboAutoConfiguration {
public static final String RMI = "rmi";
public static final String DUBBO = "dubbo";
@Value("${dubbo.protocols.rmi.port}")
private String rmiPort;
@Value("${dubbo.protocols.dubbo.port}")
private String dubboPort;
/**
* dubbo服务提供
*
* @param applicationConfig
* @param registryConfig
* @param protocolConfig
* @return
*/
@Bean(name = "rmiProviderConfig")
public ProviderConfig providerConfig(ApplicationConfig applicationConfig, RegistryConfig registryConfig) {
// 服务提供者协议配置
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setName(RMI);
protocolConfig.setPort(Integer.parseInt(rmiPort));
protocolConfig.setThreads(200);
ProviderConfig providerConfig = new ProviderConfig();
providerConfig.setTimeout(5000);
providerConfig.setRetries(1);
providerConfig.setDelay(-1);
providerConfig.setApplication(applicationConfig);
providerConfig.setRegistry(registryConfig);
providerConfig.setProtocol(protocolConfig);
return providerConfig;
}
/**
* dubbo服务提供
*
* @param applicationConfig
* @param registryConfig
* @param protocolConfig
* @return
*/
@Bean(name = "dubboProviderConfig")
public ProviderConfig providerConfig2(ApplicationConfig applicationConfig, RegistryConfig registryConfig) {
// 服务提供者协议配置
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setName(DUBBO);
protocolConfig.setPort(Integer.parseInt(dubboPort));
protocolConfig.setThreads(200);
ProviderConfig providerConfig = new ProviderConfig();
providerConfig.setTimeout(5000);
providerConfig.setRetries(1);
providerConfig.setDelay(-1);
providerConfig.setApplication(applicationConfig);
providerConfig.setRegistry(registryConfig);
providerConfig.setProtocol(protocolConfig);
return providerConfig;
}
}