踩了太多坑,官网中文参考地址:http://dubbo.apache.org/zh-cn/index.html
话不多说,直接怼代码
dubbo 2.7.x 的 boot starter写法如下
依赖:
<dubbo.version>2.7.1</dubbo.version>
<!-- —————————————————— dubbo-starter BEGIN —————————————————————————— -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
</dependency>
<!-- —————————————————— dubbo-starter END —————————————————————————— -->
服务privider:
---------------------- provider ----------------------
provider-yaml:
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"}),指定不同的注册中心
provider1:
register: true #默认,false:表示服务不注册到注册中心
address: zookeeper://a.a.a.a:2181
provider2:
address: zookeeper://b.b.b.b:2181
provider3:
address: zookeeper://c.c.c.c:2181
application:
name: myProvider
# qos-enable: true # 默认值 true, 是否允许在线运维, 配置和查询服务
# qos-port: 22222 # 默认值2222
# qos-accept-foreign-ip: false # 默认false , 不允许远程访问 telnet
scan:
base-packages: com.cmb.service.dubbo
protocol:
name: dubbo
port: 28080
provider:
retries: 0 # 服务提供者无需重试
timeout: 6000 # 默认只有1s
provider-bean:
bean1注解:
@Service(group = "project1", version = "1.0.0", registry = {"provider1", "provider3"}
public class DubboPrintServiceImpl implements DubboPrintService{...}
bean2注解:
@Service(group = "project2", version = "2.0.0", registry = {"provider3"})
public class DubboPrintService2Impl implements DubboPrintService{...}
---------------------- provider ----------------------
消费者 comsumer:
---------------------- consumer ----------------------
consumer-yaml:
dubbo:
# registry: # 单注册中心,注意属性级别:dubbo.registry
# register: false # true(默认), false:表示服务不注册到注册中心(只订阅,直连服务正常),且dubbo-admin不显示
# address: zookeeper://127.0.0.1:2181
registries: # 多注册中心
consumer1:
register: true #默认,false:表示服务不注册到注册中心
address: zookeeper://a.a.a.a:2181
consumer2:
address: zookeeper://b.b.b.b:2181
consumer3:
address: zookeeper://c.c.c.c:2181
application:
name: myConsumer
scan:
base-packages: com.cmb.controller
consumer:
timeout: 3000
check: true # 服务启动时候检查是否可用
retries: 2 # 服务重试次数
consumer-bean:
下面的Bean注入后,直接使用
@Reference(group = "project1", version = "1.0.0", registry = {"consumer1", "consumer3"})
private DubboPrintService printService1;
@Reference(group = "project2", version = "2.0.0", registry = {"consumer2"})
private DubboPrintService printService2;
---------------------- consumer ----------------------