(飛歌工作筆記)dubbo2.6.2+spring boot實現對多協議配置
背景:公司需要使用的dubbo來傳輸檔案。但是檔案比較大,就不能使用dubbo框架的dubbo協議了。dubbo協議會有大小限制。一般來說是8M。
所有能夠選擇的協議只有: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;
}
}