Spring boot 2.1中通过编码的方式获取Dubbo服务

使用Spring boot 2.1 与 dubbo 2.7.1

服务注册

import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;


ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName(config.getApplicationName());

RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress(config.getRegistryAddress());

ProtocolConfig protocol = new ProtocolConfig();
protocol.setName(config.getProtocolName());
protocol.setPort(config.getProtocolPort());

// 具体的结口的实现类
CompareServiceImpl impl = new CompareServiceImpl();

ServiceConfig<CompareService> service = new ServiceConfig<>();
service.setApplication(applicationConfig);
service.setRegistry(registryConfig);
service.setProtocol(protocol);
// 接口的类
service.setInterface(CompareService.class);
service.setRef(impl);
service.setVersion(config.getVersion());
service.setGroup(config.getGroup());

service.export();

服务获取

ApplicationConfig application = new ApplicationConfig();
application.setName(appName);

RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress(zookeeperUrl);

ReferenceConfig<CompareService> referenceConfig = new ReferenceConfig<>();
//referenceConfig.setApplication(application);
referenceConfig.setRegistry(registryConfig);
// 接口类
referenceConfig.setInterface(CompareService.class);
referenceConfig.setVersion(version);
referenceConfig.setGroup(group);

CompareService service = referenceConfig.get();

return service;
  1. 这种获取方式对资源开销还是很大的,最好进行缓存。
  2. 奇怪的是网上其他文章有设置application,也就是上面注释掉的哪一行代码,我运行的时候异常告诉我说,我的application重复了,去掉后就能正常的回去服务。可能是因为我是通过version 和 group 来指定不同的服务的吧。后续再深入读读源码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值