安裝ZooKeeper
我這裏使用zookeeper作爲服務註冊中心,版本3.4.9,下載地址:
http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/
下載後,解壓
要先配置一下,否則沒法啓動,啓動會報錯,找不到 zoo.cfg
文件,其實這個配置文件是有的,在 conf
文件夾裏,只不過名字是 zoo_sample.cfg
把名字改一下即可
windows是啓動還有些問題,直接運行 zkServer.cmd
還不行,我電腦上還裝了 git-bash ,所以直接打開 git-bash 進入 bin 目錄,運行命令 ./zkServer.sh start
即可啓動
停止命令是 ./zkServer.sh stop
新建項目SpringBoot_dubbo_server
加入依賴:
<?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>com.tugohost</groupId>
<artifactId>springboot_dubbo_server</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot_dubbo_server</name>
<description>springboot_dubbo_server</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置文件application.yml
如下:
server:
port: 8880
spring:
dubbo:
application:
name: dubbo_server
registry:
address: zookeeper://127.0.0.1:2181
protocol:
name: dubbo
port: 20880
scan: com.tugohost.dubbo
定義一個Service Interface:HelloService
package com.tugohost.dubbo;
/**
* @author: Tu9ohost
*/
public interface HelloService {
String SayHello(String name);
}
接口的實現類:HelloServiceImpl.java:
package com.tugohost.dubbo.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.tugohost.dubbo.HelloService;
/**
* @author: Tu9ohost
*/
@Service(version = "1.0.0")
public class HelloServiceImpl implements HelloService {
@Override
public String SayHello(String name) {
return "Hello ," + name;
}
}
到這裏dubbo服務提供者已經創建完成。
新建項目SpringBoot_dubbo_client
加入依賴如下:
<?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>com.tugohost</groupId>
<artifactId>springboot_dubbo_client</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot_dubbo_client</name>
<description>springboot_dubbo_client</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置文件application.yml
server:
port: 8881
spring:
dubbo:
application:
name: dubbo_client
registry:
address: zookeeper://127.0.0.1:2181
scan: com.tugohost.controller
HelloService接口如下:
package com.tugohost.dubbo;
/**
* @author: Tu9ohost
*/
public interface HelloService {
String SayHello(String name);
}
創建一個controller進行測試
注意版本號要與提供者的版本號一致,dubbo掃描包要掃描到我們要使用的類上,代碼如下:
package com.tugohost.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.tugohost.dubbo.HelloService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author: Tu9ohost
*/
@RestController
public class HelloController {
@Reference(url = "dubbo://127.0.1:20880",version = "1.0.0")
HelloService helloService;
@GetMapping("sayHello")
public String sayHello(String name){
return helloService.SayHello(name);
}
}
到這裏dubbo服務調用者也創建完成。
測試
分別啓動服務提供者項目和服務調用者項目,在瀏覽器訪問http://localhost:8881/sayHello?name=tugohost,如圖,證明調用成功。