(飛歌工作筆記)dubbo2.6.2+spring boot實現對多協議配置

背景:公司需要使用的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;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章