码迷,mamicode.com
首页 > 编程语言 > 详细

9.2 SpringBoot使用Zookeeper和Dubbo

时间:2020-03-09 17:57:44      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:查看   code   recipe   prope   引用   ica   VID   rap   项目   

一.项目搭建

1.步骤

  • 建立一个空项目,添加两个springboot模块:provide-server和consumer-server 一个提供服务另一个消费服务(略)

  • 两个模块的pom.xml中都导入依赖

  • 编写provide-server代码

  • 编写consumer-server代码

  • 启动dubbo和zookeeper(略)

  • 启动provide-server和consumer-server(略)

  • 查看dubbo后台

2.两个模块的pom.xml中都导入依赖

<!-- Dubbo Spring Boot Starter -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.3</version>
</dependency>

<!--zkclient-->
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>

<!-- 引入zookeeper -->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.12.0</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>2.12.0</version>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.14</version>
    <!--排除这个slf4j-log4j12-->
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3.编写provide-server代码

  • 添加service目录添加接口和实现类以及配置application.properties文件

TicketService:

public interface TickerService {

    String getTicket();
}

TicketServiceImpl:

  • 注意注解:@Service是dubbo的,@Component是spring的

import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

@Service  //这个是dubbo的service注解不是spring的,加了这个注解在项目启动后就自动注册到注册中心zookeeper中
@Component //这个在spring中注册,由spring管理的组件,不用Service是因为为了避免与dubbo的service冲突(而忘了import)
public class TickerServiceImpl implements TickerService {


    @Override
    public String getTicket() {
        return "getTicket success!";
    }
}

applictaion.properties:向zookeeper注册服务

server.port=8001

#当前应用名字
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫描指定包下服务
dubbo.scan.base-packages=ustc.wzh.service

4.编写consumer-server代码

  • 添加service目录使用服务的类以及配置application.properties文件,最后还要添加一个和调用接口相同路径名的接口

UserService:

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

@Service  //spring容器管理
public class UserService {

    //拿到远程的provider-server提供的服务
    @Reference  //dubbo的注解用于引用服务,引用服务方式有两种:1.Pom坐标,2.需要定义路径相同的接口名
    TickerService tickerService;

    public void buyTicket(){

        String ticket = tickerService.getTicket();
        System.out.println("在注册中心拿到:"+ticket);
    }
}

在consumer-server的测试类中使用:

  • 一直调用可以在dubbo后台看到服务的消费者

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import ustc.wzh.service.UserService;

@SpringBootTest
class ConsumerServerApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() throws InterruptedException {
        
        while (true){

            Thread.sleep(1000);
            userService.buyTicket();
        }
    }
}

application.properties:

server.port=8002

#当前应用名字
dubbo.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

在service中添加一个TicketService接口直接将provide-server中的TicketService接口拷过来即可

5.查看dubbo后台

技术图片

技术图片

 

9.2 SpringBoot使用Zookeeper和Dubbo

标签:查看   code   recipe   prope   引用   ica   VID   rap   项目   

原文地址:https://www.cnblogs.com/zhihaospace/p/12449748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!