【笔记】SpringBoot项目整合Dubbo

前言

SpringBoot项目整合Dubbo

准备工作

  • 启动Zookeeper集群

接口

  • 提取POJO类Server接口到接口模块

  • 父级依赖

1
2
3
4
5
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>

生产者

  • 生产者模块中只保留Mapper和ServiceImpl

  • ServiceImpl中,@Server注解换成Dubbo的@Server注解

@Server(timeout = 3000):3秒超时

  • 配置application.yml
1
2
3
4
5
6
7
8
9
10
dubbo:
scan:
basePackages: com.jt #指定dubbo的包路径
application: #应用名称
name: provider-user #一个接口对应一个服务名称
registry:
address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
protocol: #指定协议
name: dubbo #使用dubbo协议(tcp-ip) web-controller直接调用sso-Service
port: 20880 #每一个服务都有自己特定的端口 不能重复.

消费者

  • 消费者模块只保留Controller

  • Controller中,@Autowired注解换成Dubbo的@Reference注解

@Reference(loadbalance = "random"):随机算法,默认不加参数时就是随机算法
@Reference(loadbalance = "roundrobin"):轮询算法
@Reference(loadbalance = "consistenthash"):一致性hash算法
@Reference(loadbalance = "leastactive"):最少访问算法

@Reference(check = false):启动消费者时不去校验是否有生产者

  • 因为消费者不访问数据库,所以消费者模块的启动类上标注@SpringBootApplication(exclude=DataSourceAutoConfiguration.class)注解,标注后,不连接Mybatis也不报错

  • 配置application.yml

1
2
3
4
5
6
7
dubbo:
scan:
basePackages: com.jt
application:
name: consumer-user #定义消费者名称
registry: #注册中心地址
address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183

完成

  • 启动时先启动生产者,后启动消费者