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

效果:

 

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