一、下载配置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
效果: