一、下載配置zookeeper
下載地址(3.5.7): http://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/
1.解壓文件,然後創建data文件夾和log文件夾
2.將/conf 文件夾下的 zoo_sample.cfg 文件,名稱修改爲 zoo.cfg。並將文件中的dataDir屬性值設置爲data文件夾所在地址,同時添加dataLogDir屬性,其值爲log文件夾所在位置
3.運行zookeeper服務,雙擊 /bin/zkServer.cmd,
如果啓動失敗,注意查看端口是否被佔用,默認爲2181。在/conf/zoo.cfg 文件中的clientPort屬性進行配置
二、搭建項目
項目代碼: https://gitee.com/manyundemimang/springBoot-dubbo/tree/master
創建提供者服務
1.創建一個springboot項目,引入dubbo和zookeeper包
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 整合dubbo -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- zookeeper客戶端 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
</dependencies>
2.創建一個提供給消費值使用的service類,DubboService.java類,和他的實現類DubboServiceimpl.java
注意:@Service 註解是dubbo下的
package com.hn.shopdubbo.dubbo.service;
/**
* dubbo測試service
*/
public interface DubboService {
/**
* 拼接後綴'-dubbo',並返回
* @param str
* @return
*/
String test(String str);
}
package com.hn.shopdubbo.dubbo.service;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
@Component
@Service //注意這個com.alibaba.dubbo.config.annotation.Service;包下的
public class DubboServiceimpl implements DubboService {
@Override
public String test(String str) {
System.out.println("**********dubbo調用成功*************");
System.out.println(str);
return str + "-Dubbo";
}
}
3.在啓動類上添加@EnableDubbo註解
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class ShopDubboApplication {
public static void main(String[] args) {
SpringApplication.run(ShopDubboApplication.class);
}
}
4.配置文件application.yml
dubbo:
application:
name: shop-dubbo #服務名稱
registry:
address: zookeeper://localhost:2181 #zookeeper服務地址
protocol:
name: dubbo #服務暴露名稱
port: 20890 #dubbo服務暴露的端口
scan:
base-packages: com.hn.shopdubbo.dubbo.service #提供服務所在包的
server:
port: 8283
創建消費者服務
1.創建一個springBoot項目,引入包同上個提供者項目一樣
2.創建接口類,
注意:這個接口類的類名、包名、方法名、參數都要與提供者,提供的業務類的相同
package com.hn.shopdubbo.dubbo.service;
public interface DubboService {
String test(String str);
}
3.通過@Reference註解注入和調用提供者提供的服務
import com.alibaba.dubbo.config.annotation.Reference;
import com.hn.shopdubbo.dubbo.service.DubboService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/dubbo")
public class DubboController {
@Reference //注意這個是 com.alibaba.dubbo.config.annotation.Reference;包下的
DubboService dubboService;
@GetMapping("/test")
public String test(String str){
return dubboService.test(str);
}
}
4.配置文件信息application.yml
dubbo:
application:
name: shop-api #服務明後才能
registry:
address: zookeeper://localhost:2181 #zookeeper服務地址
server:
port: 8281 #項目端口
啓動兩個項目,進行訪問
地址:http://localhost:8281/dubbo/test?str=sss
效果: