(飞歌工作笔记)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;
    }
}

猜你喜欢

转载自blog.csdn.net/ganjing222/article/details/82383634
今日推荐