spring boot + dubbo + zookeeper服务搭建

2 篇文章 0 订阅
1 篇文章 0 订阅

只是一个简单的小例子,分了三个小项目:

  1. 接口提供者provider
  2. 消费者consumer
  3. dubbo-admin(监控已注册的服务)

准备工作(Windows下):

下载并启动zookeeper服务,使得接口可以被注册

  • 下载apache-zookeeper-3.5.5-bin.tar.gz
  • 解压
  • 进入bin
  • 执行zkServer.cmd

provider

pom.xml中的主要依赖:

 <dependency>
     <groupId>com.alibaba.spring.boot</groupId>
     <artifactId>dubbo-spring-boot-starter</artifactId>
     <version>2.0.0</version>
 </dependency>
 <dependency>
     <groupId>org.apache.zookeeper</groupId>
     <artifactId>zookeeper</artifactId>
     <version>3.5.5</version>
 </dependency>
 <dependency>
     <groupId>com.101tec</groupId>
     <artifactId>zkclient</artifactId>
     <version>0.10</version>
 </dependency>

配置文件application.properties:

server.port=8089

#spring.application.name=dubbo-spring-boot-starter
#spring.dubbo.server=true
#spring.dubbo.registry=zookeeper://127.0.0.1:2181

#dubbo服务提供者配置
dubbo.application.id=provider
dubbo.application.name=provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.scan.base-package=com.example.demo.service
#注册中心的协议类型
dubbo.registry.protocol= zookeeper

UserService :

package com.example.demo.service;

import com.example.demo.entity.User;

public interface UserService {
    User helloDubbo(String name);
}

UserServiceImpl :

package com.example.demo.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.example.demo.Util.ChineseToPinyinUtil;
import com.example.demo.entity.User;
import lombok.extern.log4j.Log4j;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.springframework.stereotype.Component;

@Service(version = "userService")
@Log4j
@Component
public class UserServiceImpl implements UserService {

    @Override
    public User helloDubbo(String name) {
        User user = new User();
        user.setNickName(name);
        String email = "";
        try {
            email = ChineseToPinyinUtil.convertChineseToPinyin(name, false, HanyuPinyinCaseType.LOWERCASE);
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            log.error(e.getMessage());
        }
        user.setEmail( email + "@qq.com");
        return user;
    }
}

启动类:

package com.example.demo;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
public class DubboproviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboproviderApplication.class, args);
    }

}

启动之后:provider
provider2

consumer

pom.xml主要依赖:
(dubbo-spring-boot-starter两个都要哦,一个不行)

<dependency>
   <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

<dependency>
    <groupId>com.alibaba.spring.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
</dependency>

配置文件application.properties:

server.port=8087
spring.application.name=dubbo-consumer

# Dubbo配置
dubbo.application.name=consumer
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=registry
#调用dubbo组建扫描的项目路径
dubbo.scan=com.example.demo.service
#检查服务是否可用默认为true,不可用时抛出异常,阻止spring初始化,为方便部署,可以改成false
dubbo.consumer.check=false

HelloController.java:

package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.service.ConsumerService;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.alibaba.dubbo.config.annotation.Reference;

@RestController
public class HelloController {

    @Autowired
    private ConsumerService consumerService;
    @Reference(version = "userService")
    private UserService userService;

    @RequestMapping("/hello")
    public String hello() {
        User user = consumerService.testDubbo();
        System.out.println(user.toString());
        User user2 = userService.helloDubbo("I am a consumer from controller");
        System.out.println(user2.toString());
        return user.toString() + user2.toString();
    }
}

ConsumerService:

package com.example.demo.service;

import com.example.demo.entity.User;

public interface ConsumerService {
    public User testDubbo();
}

ConsumerServiceImpl:

package com.example.demo.service;

import com.alibaba.dubbo.config.annotation.Reference;
import com.example.demo.entity.User;
import org.springframework.stereotype.Service;

@Service
public class ConsumerServiceImpl implements ConsumerService{


    @Reference(version = "userService")
    private UserService userService;

    @Override
    public User testDubbo() {
        User user = userService.helloDubbo("service层的调用者");
        return user;
    }
}

UserService (从provider原封不动拿过来即可):

package com.example.demo.service;

import com.example.demo.entity.User;

public interface UserService {
    User helloDubbo(String name);
}

启动类:

package com.example.demo;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

启动之后:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问http://localhost:8087//hello进行测试,结果:
在这里插入图片描述

dubbo-admin

代码下载:官网即可:dubbo-admin
下载后idea打开,启动
(端口号可能有冲突,遇见了就改一下)
在这里插入图片描述
分为前后台两个部门,server+ui,都要启动才行,前台使用vue,启动语句已经在图上标出
启动后,浏览器打开访问页面` I Your application is running here: http://localhost:8081
结果如图:
在这里插入图片描述

可以看到我们已经注册的服务

代码还没上传,后面上传了会挂出来O(∩_∩)O哈哈~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值