前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot---(23)springboot整合dubbo-zookeeper

Spring Boot---(23)springboot整合dubbo-zookeeper

作者头像
IT云清
发布2019-01-22 11:44:04
8200
发布2019-01-22 11:44:04
举报
文章被收录于专栏:IT云清IT云清
本文讲解如何在springboot项目中整合dubbo,zookeeper.

详细代码地址:https://github.com/lightClouds917/springboot-dubbo-zookeeper

具体步骤分为五部:

  • 1.安装,启动zookeeper
  • 2.新建dubbo-api项目
  • 3.新建dubbo-server项目
  • 4.新建dubbo-client项目
  • 5.启动项目

1.安装,启动zookeeper

如果基础的linux命令不熟练,请参考:Linux—(1)linux常用命令

代码语言:javascript
复制
tar zxvf zookeeper-3.4.8.tar.gz
  • 配置文件 在 conf 目录新建 zoo.cfg ,配置如下
代码语言:javascript
复制
tickTime=2000
dataDir=/javaee/zookeeper/data 
dataLogDir=/javaee/zookeeper/log
clientPort=2181
  • 启动 bin目录下,启动
代码语言:javascript
复制
cd zookeeper-3.3.6/bin
./zkServer.sh start

2.新建dubbo-api项目

此项目主要是用于存放dubbo-server,dubbo-client公用的东西,比如实体类,服务接口等。
1.User实体
代码语言:javascript
复制
package com.java4all.domain;

import java.io.Serializable;

/**
 * Author: momo
 * Date: 2018/6/9
 * Description:用户实体
 */
public class User implements Serializable{
    private static final long serialVersionUID = -6591900875272367270L;

    private Integer id;

    private String name;

    private Integer age;

    public User() {
    }

    public User(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
2.接口
代码语言:javascript
复制
package api;


import com.java4all.domain.User;

/**
 * Author: momo
 * Date: 2018/6/9
 * Description:对外服务的接口
 */
public interface UserApi {
    /**根据id查询user*/
    User getUserById(Integer id);
}

3.新建dubbo-server项目

此项目用来实现dubbo-api项目中对外暴露的服务接口。
1.引入dubbo相关依赖
代码语言:javascript
复制
        <!-- Spring Boot Dubbo 依赖 -->
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>
        <!--log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.9</version>
        </dependency>
        <!--api模块-->
        <dependency>
            <groupId>com.java4all</groupId>
            <artifactId>api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
2.配置文件application.properties
代码语言:javascript
复制
server.port=8011
## Dubbo 服务提供者配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
# 这个扫描到实现类的所在包
spring.dubbo.scan=com.java4all.apiImpl
3.接口实现类
代码语言:javascript
复制
package com.java4all.apiImpl;

import api.UserApi;
import com.alibaba.dubbo.config.annotation.Service;
import com.java4all.domain.User;

/**
 * Author: momo
 * Date: 2018/6/9
 * Description:接口服务实现类
 */
//对外暴露为dubbo服务,注意,这个@service为dubbo的@service,版本号可不要,或者自定义
@Service(version = "1.0.0")
public class UserApiImpl implements UserApi
{
    @Override
    public User getUserById(Integer id) {
        return new User(id,"汪汪啊",22);
    }
}

4.新建dubbo-client项目

此项目,我们用来调用对外暴露的接口。
1.引入dubbo相关依赖
代码语言:javascript
复制
        <!-- Spring Boot Dubbo 依赖 -->
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>
        <!--log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.9</version>
        </dependency>
        <!--api模块-->
        <dependency>
            <groupId>com.java4all</groupId>
            <artifactId>api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
2.配置文件application.properties
代码语言:javascript
复制
server.port=8022
## Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181
spring.dubbo.scan=com.java4all.controller
3.接口实现类
代码语言:javascript
复制
package com.java4all.controller;

import api.UserApi;
import com.alibaba.dubbo.config.annotation.Reference;
import com.java4all.domain.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * Author: momo
 * Date: 2018/6/9
 * Description:
 */
@RestController
@RequestMapping(value = "user")
public class UserController {

    //指定服务实现类以及版本
    @Reference(version = "1.0.0")
    private UserApi userApi;

    @RequestMapping(value = "getUserById",method = RequestMethod.GET)
    public User getUserById(Integer id){
        //调用服务提供的方法
        return userApi.getUserById(88);
    }

}

5.启动项目

启动顺序为api,server,client;然后我们访问接口,发现服务被调用。

整合过程中遇到什么问题,欢迎留言探讨。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文讲解如何在springboot项目中整合dubbo,zookeeper.
  • 1.安装,启动zookeeper
  • 2.新建dubbo-api项目
    • 此项目主要是用于存放dubbo-server,dubbo-client公用的东西,比如实体类,服务接口等。
      • 1.User实体
        • 2.接口
        • 3.新建dubbo-server项目
          • 此项目用来实现dubbo-api项目中对外暴露的服务接口。
            • 1.引入dubbo相关依赖
              • 2.配置文件application.properties
                • 3.接口实现类
                • 4.新建dubbo-client项目
                  • 此项目,我们用来调用对外暴露的接口。
                    • 1.引入dubbo相关依赖
                      • 2.配置文件application.properties
                        • 3.接口实现类
                        • 5.启动项目
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档