SpringBoot+Dubbo+Zookeeper入门案例

Posted ITdfq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot+Dubbo+Zookeeper入门案例相关的知识,希望对你有一定的参考价值。

项目功能

  • 生产者提供服务(售卖票)
  • 消费者消费服务(买票)

项目搭建

项目模块

  • 创建两个模块,分别代表生产者和消费者

    • 生产者pom文件
     <!-- Dubbo Spring Boot Starter -->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>2.7.3</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
            <dependency>
                <groupId>com.github.sgroschupf</groupId>
                <artifactId>zkclient</artifactId>
                <version>0.1</version>
            </dependency>
            <!--dubbo-->
            <!-- Dubbo Spring Boot Starter -->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>2.7.3</version>
            </dependency>
            <!--zookeeper-->
            <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/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>
    
    • 生产者配置文件
    # 应用名称
    spring.application.name=provider
    # 应用服务 WEB 访问端口
    server.port=8082
    
    #服务名字
    dubbo.application.name=provider
    #服务地址
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    #那些服务要被注册
    dubbo.scan.base-packages=com.itdfq.provider.service
    
    
    • 消费者pom文件与生产者相同
    • 消费者配置文件
    # 应用名称
    spring.application.name=consumer
    # 应用服务 WEB 访问端口
    server.port=8081
    #消费者去注册中心拿服务(暴露自己的名字)
    dubbo.application.name=consumer`在这里插入代码片`
    #注册中心地址
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    
  • 使用Dubbo-admin后台管理进行查看

  • 本地运行Zookeeper

生产者提供卖票

@Service  //发布服务,注入到注册中心  用的是dubbo的service
@Component  //放入容器中
public class TicketServiceImpl implements TicketService{
    @Override
    public String getTicker() {
        return "Doobo+Zookeeper";
    }
}

注意

  • Service用的是Dubbo的service

消费者买票

@Service //用的是Spring自带的,放入容器中
public class Uservice {
    //拿到provider的票
    @Reference //引用  1:pom坐标 2:定义相同的接口名
            TicketService ticketService;

    public void buyPiao(){
        String ticker = ticketService.getTicker();
        System.out.println("再注册中心拿到票"+ticker);
    }

}

注意:

  • 这里的Service用的是Spring中的Service
  • @Reference注解引用的时候,如果采用方法二,需要相同的目录结构才可以访问到

测试

  • 测试代码

     @Autowired
        Uservice uservice;
    
        @Test
        void contextLoads() {
            uservice.buyPiao();
        }
    
  • 消费者提供的服务
    后台管理
    具体提供的服务

  • 测试结果
    结果

以上是关于SpringBoot+Dubbo+Zookeeper入门案例的主要内容,如果未能解决你的问题,请参考以下文章

dubbo-admin的安装

短信平台README.MD

Dubbo源码学习系列 整合zookeeper注册中心并提供watcher机制

Springboot 整合 Dubbo/ZooKeeper

io.dubbo.springboot版本不兼容dubbo-2.5.3

ali的dubbo与springboot