由于最近公司的工程都是springBoot了,接口基本上都是feign,突然要与外部写一个dubbo接口;
然后发现springBoot可以用注解来注册与消费dubbo服务,比以前那种xml配置的方式简洁了许多;但是在配置多个注册中心的时候碰到一些问题,在此简单记录一下;
1、dubbo版本(dubbo-2.7.3)
引用包:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.3</version>
</dependency>
2、application-local.yml 配置
# -------------------- Dubbo 配置 BEGIN --------------------
dubbo:
# registry: # 单注册中心,注意属性级别:dubbo.registry,注意多注册中心格式:@Service(registry = {"registry1","registry2","registry3"})
# register: false # true(默认), false:表示服务不注册到注册中心(只订阅,直连服务正常),且dubbo-admin不显示
# address: zookeeper://127.0.0.1:2181
registries: # 多注册中心,注意属性级别:dubbo.registries, 不同的方法可以用@Service(registry = {"registry2"}),指定不同的注册中心
registry1:
register: true #默认true, false:表示服务不注册到注册中心
address: zookeeper://172.20.38.00:2181
registry2:
register: true
address: zookeeper://10.234.9.00:2181
application:
name: xx-xxx-api
# qos-enable: true # 默认值 true, 是否允许在线运维, 配置和查询服务
# qos-port: 22222 # 默认值2222
# qos-accept-foreign-ip: false # 默认false , 不允许远程访问 telnet
scan:
base-packages: com.xxxx.xx.xxxx.service.dubbo #此处可以用@EnableDubbo 或者@DubboComponentScan代替 例:@DubboComponentScan(basePackages ="com.xxxx.xx.xxxx.service.dubbo")
protocol:
name: dubbo
port: 28080
provider:
retries: 0 # 服务提供者无需重试
timeout: 60000 # 默认只有1s
# -------------------- Dubbo 配置 END --------------------
3、使用(注册与消费)
//将服务注册到两个不同的注册中心上
@Service(version="1.0.0",registry = {"registry1","registry2"})
publicclassUserInfoISVImplimplementsUserInfoISV{
@Override
publicStringsayHello(String name){
return"你好呀,"+name+"先生!";
}
}
//将服务注册到不同的注册中心,从不同的注册中心取
@Reference(version="1.0.0",registry = "registry1")
privateUserInfoISV userInfoISV1;
@Reference(version="1.0.0",registry="registry2")
privateUserInfoISV userInfoISV2;
2020-08-15新增:
当公用一个注册中心互相需要dubbo注册与消费时;可能存在某一方工程未启动,未注册服务到注册中心,影响消费方工程启动;可以加以下配置解决:
dubbo:
consumer:
check: false
以上内容摘抄部分博客,只为自己记录理解及分享;如有侵权,请联系删除!