本章節建立生產者和消費者來演示dubbo的demo
生產者:springboot-dubbo-provider 和 消費者:springboot-dubbo-consumer 工程配置詳解
Apache官方Demo:https://github.com/alibaba/dubbo-spring-boot-starter
阿里巴巴官方Demo:https://github.com/apache/incubator-dubbo-spring-boot-project
GitHub 上代碼: https://github.com/JeffLi1993/springboot-learning-example。
springboot-dubbo-provider:
1.pom.xml導入依賴 :
pom.xml 中依賴了 spring-boot-starter-dubbo 工程,該項目地址是 https://github.com/teaey/spring-boot-starter-dubbo。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springboot</groupId>
<artifactId>springboot-dubbo-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-dubbo 服務端:: 整合 Dubbo/ZooKeeper 詳解 SOA 案例</name>
<!-- Spring Boot 啟動父依賴 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<properties>
<dubbo-spring-boot>1.0.0</dubbo-spring-boot>
</properties>
<dependencies>
<!-- Spring Boot Dubbo 依賴 -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>${dubbo-spring-boot}</version>
</dependency>
<!-- Spring Boot Web 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Test 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
2.application.properties 配置
server.port=8080 ## Dubbo 配置 spring.dubbo.application.name=provider spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20880 spring.dubbo.scan=org.spring.springboot.dubbo
// 注冊為 Dubbo 服務
@Service(version = "1.0.0")
public class CityDubboServiceImpl implements CityDubboService {
public City findCityByName(String cityName) {
return new City(1L,2L,"溫嶺","是我的故鄉");
}
}
springboot-dubbo-consumer:
1.application.properties 配置
## 避免和 server 工程端口沖突 server.port=8081 ## Dubbo 服務消費者配置 spring.dubbo.application.name=consumer spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.scan=org.spring.springboot.dubbo
2.CityDubboConsumerService.java 城市 Dubbo 服務消費者
@Component
public class CityDubboConsumerService {
@Reference(version = "1.0.0")
CityDubboService cityDubboService;
public void printCity() {
String cityName="溫嶺";
City city = cityDubboService.findCityByName(cityName);
System.out.println(city.toString());
}
}
這里將 CityDubboConsumerService 注入 Spring 容器,是為了更方便的獲取該 Bean,然后驗證這個 Dubbo 調用是否成功。
3.ClientApplication.java 客戶端啟動類
@SpringBootApplication
public class ClientApplication {
public static void main(String[] args) {
// 程序啟動入口
// 啟動嵌入式的 Tomcat 並初始化 Spring 環境及其各 Spring 組件
ConfigurableApplicationContext run = SpringApplication.run(ClientApplication.class, args);
CityDubboConsumerService cityService = run.getBean(CityDubboConsumerService.class);
cityService.printCity();
}
}
解釋下這段邏輯,就是啟動后從 Bean 容器中獲取城市 Dubbo 服務消費者 Bean。然后調用該 Bean 方法去驗證 Dubbo 調用是否成功。
先啟動生產者provider,然后啟動消費者consumer,控制台打印數據,則調用成功!
本文參考來自:https://www.cnblogs.com/Alandre/p/6490142.html
