springboot整合dubbo\zookeeper做注册中心

  springboot整合dubbo发布服务,zookeeper做注册中心。前期的安装zookeeper以及启动zookeeper集群就不说了。

 

  dubbo-admin-2.5.4.war:dubbo服务管理项目,下载完后部署到tomcat即可查看(登录的用户名和密码默认都是root)。

pom文件引入dubbo以及zkcli包:

复制代码
        <!-- 引入dubbo-spring-boot-starter以及zkclient依赖 -->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.9</version>
        </dependency>
复制代码

 

 

1.dubbo服务端(提供dubbo服务)

目录结构如下:

 

 配置文件如下

 application.properties

复制代码
############################################################
#
# DUBBO相关配置
#
############################################################
#当前服务/应用名称
spring.dubbo.application.name=provider
#注册中心的协议和地址
#spring.dubbo.registry.address=127.0.0.1:2181
#spring.dubbo.registry.protocol=zookeeper
spring.dubbo.server=true
spring.dubbo.registry=zookeeper://127.0.0.1:2181
#通信规则(通信协议和接口)
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
复制代码

 

User.java

复制代码
package org.springboot.dubbo.bean;

import java.io.Serializable;

public class User implements Serializable {
    private String userName;
    private String password;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User(String userName, String password) {
        super();
        this.userName = userName;
        this.password = password;
    }
}
复制代码

 

UserService.java

复制代码
package org.springboot.dubbo.service;

import java.util.List;

import org.springboot.dubbo.bean.User;

public interface UserService {
    List<User> getAllUsers();

    User getUserByUserName(String username);
}
复制代码

UserServiceImpl.java (注解发布服务,注意@Service注解是dubbo提供的)

复制代码
package org.springboot.dubbo.service;

import java.util.ArrayList;
import java.util.List;

import org.springboot.dubbo.bean.User;
import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Service;

@Service(version = "1.0.0") // dubbo的service注解,不具备spring的@service注解的功能
@Component
public class UserServiceImpl implements UserService {

    public List<User> getAllUsers() {
        List<User> users = new ArrayList<User>();
        for (int i = 0; i < 20; i++) {
            User user = new User("usernnamei" + i, "password" + i);
            users.add(user);
        }

        return users;
    }

    public User getUserByUserName(String username) {
        return new User(username, username);
    }
}
复制代码

 

 应用启动类:

复制代码
package org.springboot.dubbo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;

@SpringBootApplication
@EnableDubboConfiguration
public class MySpringBootApplication {
    public static void main(String[] args) throws InterruptedException {
        // 入口运行类
        SpringApplication.run(MySpringBootApplication.class, args);
        Thread.sleep(50 * 1000);
    }
}
复制代码

 

启动之后查看dubbo管理界面:

 

 2.dubbo客户端(使用dubbo提供的服务)

 目录结构:

 

application.properties

复制代码
############################################################
#
# DUBBO相关配置
#
############################################################
#当前服务/应用名称
spring.dubbo.application.name=consumer
#注册中心的协议和地址
spring.dubbo.server=true
spring.dubbo.registry=zookeeper://127.0.0.1:2181
#通信规则(通信协议和接口)
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=org.springboot.dubbo
复制代码

 

UserController.java(通过@Reference消费服务)

复制代码
package org.springboot.dubbo.controller;

import java.util.List;

import org.springboot.dubbo.bean.User;
import org.springboot.dubbo.service.UserService;
import org.springframework.stereotype.Controller;

import com.alibaba.dubbo.config.annotation.Reference;

@Controller
public class UserController {
    @Reference(version = "1.0.0")
    UserService userService;

    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    public User getUserByUserName(String username) {
        return userService.getUserByUserName(username);
    }
}
复制代码

 结果:

[org.springboot.dubbo.bean.User@31741aad, org.springboot.dubbo.bean.User@3d836d38, org.springboot.dubbo.bean.User@7f779714, org.springboot.dubbo.bean.User@45fe36d, org.springboot.dubbo.bean.User@334c0b59, org.springboot.dubbo.bean.User@457d1a5e, org.springboot.dubbo.bean.User@184e34f6, org.springboot.dubbo.bean.User@36770ef1, org.springboot.dubbo.bean.User@42760c26, org.springboot.dubbo.bean.User@5417b4e0, org.springboot.dubbo.bean.User@60640941, org.springboot.dubbo.bean.User@479bbbd7, org.springboot.dubbo.bean.User@414944fb, org.springboot.dubbo.bean.User@314fdc39, org.springboot.dubbo.bean.User@72033b79, org.springboot.dubbo.bean.User@3235bf69, org.springboot.dubbo.bean.User@66a9a03f, org.springboot.dubbo.bean.User@a57bcc1, org.springboot.dubbo.bean.User@6292835, org.springboot.dubbo.bean.User@780eb2bb]
org.springboot.dubbo.bean.User@605dfc60

 

管理界面查看如下:

 

 

 

 

 

  至此基本完成了简单的dubbo环境搭建。

  git地址:   https://github.com/qiao-zhi/springboot

 

posted @   QiaoZhi  阅读(10139)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2018-03-15 【环境变量】Linux 下三种方式设置环境变量与获取环境变量
2018-03-15 【Git】GitHub的SSH提交配置[
2018-03-15 spring配置redis注解缓存
2018-03-15 【查看linux配置】查看linux系统常用的命令,Linux查看系统配置常用命令
点击右上角即可分享
微信分享提示