版本
- JDK 14
- Gradle 6.3
- Dubbo 2.7.7
- ZooKeeper 3.6.0
註冊中心安裝
首先確保你的環境中有 Docker,輸入下列命令進行 Zookeeper 安裝。
docker run -p 2181:2181 -d --name=zookeeper zookeeper
視覺化管理控制檯搭建
首先確保你的環境有 Git 和 Maven,然後依次輸入下列命令。
git clone https://github.com/apache/dubbo-admin.git
cd dubbo-admin
mvn clean package -Dmaven.test.skip=true
cd dubbo-admin-distribution/target
java -jar dubbo-admin-0.2.0-SNAPSHOT.jar
成功執行之後訪問 127.0.0.1:8080,出現以下介面說明管理控制檯搭建成功。
建立介面工程
開啟 IDEA 建立一個基礎的 Gradle Module Project,建立服務介面類。
package com.example.api.service;
public interface HelloWorldService {
public String sayHelloTo(String developer);
}
將介面工程專案打包成 Jar 包,一會兒提供給服務提供者和消費者使用。
建立服務提供者
- 建立一個基本的 SpringBoot 專案,引入 Spring Web 模組。
- 在專案目錄下建立 libs 資料夾,將上面的介面工程 Jar 包放入 libs 資料夾。
- 開啟 build.gradle 檔案,寫入下列配置。
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
implementation 'org.apache.dubbo:dubbo-spring-boot-starter:2.7.7'
implementation 'org.apache.curator:curator-framework:4.3.0'
implementation 'org.apache.curator:curator-recipes:4.3.0'
implementation 'com.example:api:1.0.0'
}
- 建立 HelloWorldServiceImpl 實現 HelloWorldService 介面。
package com.example.provider.service.impl;
import com.example.api.service.HelloWorldService;
import org.apache.dubbo.config.annotation.DubboService;
@DubboService
public class HelloWorldServiceImpl implements HelloWorldService {
@Override
public String sayHelloTo(String developer) {
return "Hello World " + developer;
}
}
- 給啟動類加上 Dubbo 註解。
package com.example.provider;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo(scanBasePackages = "com.example.provider.service.impl")
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
- 配置 Dubbo 相關配置。
spring.application.name=com.example.provider
server.port=8082
dubbo.application.name=com.example.provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
建立服務消費者
- 前三步與服務提供者相同。
- 建立 HelloWorldController 測試功能。
package com.example.consumer.controller;
import com.example.api.service.HelloWorldService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@DubboReference
private HelloWorldService helloWorldService;
@GetMapping("/hello")
public String sayHello(String developer) {
return helloWorldService.sayHelloTo(developer);
}
}
- 配置 Dubbo 相關配置。
spring.application.name=com.example.consumer
server.port=8081
dubbo.application.name=com.example.consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
- 開啟瀏覽器輸入 127.0.0.1:8081/hello?developer=xxxx 進行訪問~
控制檯顯示結果
到這裡我們就完成了一個最基礎的 Dubbo Demo Project!點選獲取示例程式碼
本作品採用《CC 協議》,轉載必須註明作者和本文連結