快速搭建基於註解的 Dubbo 專案

曾是然發表於2020-06-23

版本

  1. JDK 14
  2. Gradle 6.3
  3. Dubbo 2.7.7
  4. ZooKeeper 3.6.0

註冊中心安裝

首先確保你的環境中有 Docker,輸入下列命令進行 Zookeeper 安裝。

docker run -p 2181:2181 -d --name=zookeeper  zookeeper

視覺化管理控制檯搭建

首先確保你的環境有 GitMaven,然後依次輸入下列命令。

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 包,一會兒提供給服務提供者和消費者使用。

建立服務提供者

  1. 建立一個基本的 SpringBoot 專案,引入 Spring Web 模組。
  2. 在專案目錄下建立 libs 資料夾,將上面的介面工程 Jar 包放入 libs 資料夾。
  3. 開啟 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'
}
  1. 建立 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;
    }
}
  1. 給啟動類加上 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);
    }
}
  1. 配置 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

建立服務消費者

  1. 前三步與服務提供者相同。
  2. 建立 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);
    }
}
  1. 配置 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
  1. 開啟瀏覽器輸入 127.0.0.1:8081/hello?developer=xxxx 進行訪問~

控制檯顯示結果

到這裡我們就完成了一個最基礎的 Dubbo Demo Project!點選獲取示例程式碼

本作品採用《CC 協議》,轉載必須註明作者和本文連結
Hello。

相關文章