SpringBoot + Dubbo + zookeeper 实例详解

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

效果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章