- 一、项目结构
- 二、spring-boot-dubbo-base工程
- 三、spring-boot-dubbo-consumer工程
- 四、spring-boot-dubbo-provider工程
- 五、顺序启动ProviderApplication、ConsumerApplication发现服务已经注册到nacos
源码下载
启动nacos服务
1、pom.xml
org.projectlombok lombok true org.springframework.boot spring-boot-maven-plugin
2、ProviderDTO(RPC接口DTO)
@Data
@Builder
public class ProviderDTO implements Serializable {
private Integer id;
private String name;
private Integer number;
}
3、IProviderService(RPC接口)
public interface IProviderService {
List queryList();
}
4、ResultVO(返回结果类)
@Getter public class ResultVO三、spring-boot-dubbo-consumer工程implements Serializable { private Integer code; private String message; private T data; private ResultVO() {} private ResultVO(ResultVO resultVO) { this.code = resultVO.code; this.message = resultVO.message; this.data = resultVO.data; } public static class Builder { private ResultVO resultVO; public Builder() { resultVO = new ResultVO<>(); } public Builder code(Integer code){ resultVO.code = code; return this; } public Builder message(String message){ resultVO.message = message; return this; } public Builder data(T data){ resultVO.data = data; return this; } public ResultVO build(){ return new ResultVO<>(resultVO); } } }
1、pom.xml
org.springframework.boot spring-boot-starter-web com.sans spring-boot-dubbo-base 0.0.1-SNAPSHOT org.apache.dubbo dubbo-spring-boot-starter 2.7.0 org.apache.dubbo dubbo 2.7.0 org.apache.dubbo dubbo-registry-nacos 2.7.1 com.alibaba.nacos nacos-client 1.0.0 org.springframework.boot spring-boot-maven-plugin
2、application.yml
server:
port: 8862
dubbo:
# 配置服务信息
application:
name: dubbo-consumer
# 禁用QOS同一台机器可能会有端口冲突现象
qos-enable: false
qos-accept-foreign-ip: false
# 配置注册中心
registry:
address: nacos://127.0.0.1:8848
# 设置超时时间
consumer:
timeout: 4000
spring:
main:
# 解决Bean重复定义问题
allow-bean-definition-overriding: true
3、ConsumerApplication(消费主启动类)
@EnableDubbo
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
4、ConsumerController(消费测试接口)
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Reference
private IProviderService providerService;
@GetMapping ("/list")
public ResultVO getList(){
// 远程调用
List providerDTOList = providerService.queryList();
return new ResultVO.Builder().code(200).message("success").data(providerDTOList).build();
}
}
四、spring-boot-dubbo-provider工程
1、pom.xml
org.springframework.boot spring-boot-starter-web com.sans spring-boot-dubbo-base 0.0.1-SNAPSHOT org.apache.dubbo dubbo-spring-boot-starter 2.7.0 org.apache.dubbo dubbo 2.7.0 org.apache.dubbo dubbo-registry-nacos 2.7.1 com.alibaba.nacos nacos-client 1.0.0
2、application.yml
server:
port: 8861
dubbo:
# 配置服务信息
application:
name: dubbo-provider
# 禁用QOS同一台机器可能会有端口冲突现象
qos-enable: false
qos-accept-foreign-ip: false
# 配置注册中心
registry:
address: nacos://127.0.0.1:8848
# 设置协议-协议由提供方指定消费方被动接受
protocol:
name: dubbo
port: 20880
spring:
main:
# 解决Bean重复定义问题
allow-bean-definition-overriding: true
3、ProviderServiceImpl(生产者Dubbo接口实现)
@Service
public class ProviderServiceImpl implements IProviderService {
@Override
public List queryList() {
// 初始化数据,模拟从数据库获取数据,组装数据
List list = new ArrayList<>();
list.add(ProviderDTO.builder().id(1).name("张三丰").number(100).build());
list.add(ProviderDTO.builder().id(2).name("张翠山").number(101).build());
list.add(ProviderDTO.builder().id(3).name("张无忌").number(102).build());
return list;
}
}
4、ProviderApplication(生产主启动类)
@EnableDubbo
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
五、顺序启动ProviderApplication、ConsumerApplication发现服务已经注册到nacos
利用postman测试



